小编Pro*_*oxy的帖子

单元测试错误:无法在同步测试中调用Promise.then

我开始研究单元测试角度2应用程序,但我甚至陷入最简单的例子中.我只是想运行一个简单的测试,看它是否有效,基本上我想要的是比较标题页中的值和测试中的值.

这是我得到的错误,但我没有看到错误的来源,因为一切看起来都与我同步.

错误:错误:无法从同步测试中调用Promise.then.

单元测试:

import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By }              from '@angular/platform-browser';
import { DebugElement, Input}    from '@angular/core';
import { ToDoComponent } from './todo.component';
import { FormsModule } from '@angular/forms';
describe(("test input "),() => {
    let comp:    ToDoComponent;
    let fixture: ComponentFixture<ToDoComponent>;
    let de:      DebugElement;
    let el:      HTMLElement;

    beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [ ToDoComponent ],
            imports: [ FormsModule ]
        })
        .compileComponents();  
    });

    fixture = TestBed.createComponent(ToDoComponent);
    comp = fixture.componentInstance;
    de = fixture.debugElement.query(By.css("h1"));
    el = de.nativeElement;

    it('should …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing angular

33
推荐指数
2
解决办法
2万
查看次数

Django管理员添加自定义过滤器

我正在使用django 1.10并且我需要显示数据并根据来自不同模型的值创建过滤器(其中有一个外键引用我在管理模板上使用的模型)这些是我的2个模型:这个是用于生成模板:

class Job(models.Model):
    company = models.ForeignKey(Company)
    title = models.CharField(max_length=100, blank=False)
    description = models.TextField(blank=False, default='')
    store = models.CharField(max_length=100, blank=True, default='')
    phone_number = models.CharField(max_length=60, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

这是另一个持有我的第一个外键引用的引用:

class JobAdDuration(models.Model):
    job = models.ForeignKey(Job)
    ad_activated = models.DateTimeField(auto_now_add=True)
    ad_finished = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我能够显示(最新的)开始和结束时间

def start_date(self,obj):
    if JobAdDuration.objects.filter(job=obj.id).exists():
        tempad = JobAdDuration.objects.filter(job=obj).order_by("-id")[0]
        return tempad.ad_activated
Run Code Online (Sandbox Code Playgroud)

然后我只是在list_display中调用它,这样可以正常工作.但是,我无法使用这些条件设置过滤器字段.

如果我只是将它添加到我的list_filter然后我得到一个错误,我的模型中没有这样的字段是真的(因为那个是在另一个引用我的作业表的表中).所以我想知道解决这个问题的正确方法是什么?我是否需要为过滤器本身创建另一个函数,但即使这样我也不确定应该如何在list_filter中调用它.

这是我的Django管理页面的片段.

class JobAdmin(admin.OSMGeoAdmin, ImportExportModelAdmin):
    inlines = [
    ]

    readonly_fields = ( 'id', "start_date", )

    raw_id_fields = ("company",)

    list_filter = (('JobAdDuration__ad_activated', DateRangeFilter), 'recruitment', 'active', 'deleted', 'position', ('created', DateRangeFilter), 'town')
    search_fields = …
Run Code Online (Sandbox Code Playgroud)

python django django-admin python-2.7 django-admin-filters

18
推荐指数
2
解决办法
3724
查看次数

Angular 2无法在html页面中显示项目列表

它又是我....我在视图中显示我的项目数组时遇到问题,我总是遇到这个错误.[Unhandled Promise rejection:无法设置未定义的属性'stack'; 区域:; 任务:Promise.then; 值:TypeError:无法设置未定义的属性'stack']

也许我在html视图中绑定数据时做错了.

   ngOnInit() : void{


        this._loadCoil.getAllCoils().subscribe(coils =>{ this.coils = coils;
            this.gridData = {
                data: this.coils.slice(this.currentPage, this.currentPage + this.displaySize),
                total: this.coils.length};

            for(let i = 0; i < this.coils.length; i++){
                let isFound = false;
                for (let j = 0; j < this.dropDownArray.length; j++){
                    if (this.dropDownArray[j] == this.coils[i].unit){
                        isFound = true;
                        break;
                    }
                }

                if(!isFound){
                    this.dropDownArray.push(this.coils[i].unit);
                }
            }
        }); 

    }
Run Code Online (Sandbox Code Playgroud)

基本上我想用我的数组填充单位名称并在网站上显示它们.(这部分工作正常)

但是,当我想在页面上打印名称时,我得到前面提到的.这是我在html页面中的代码片段

  <div>
         <ul>
           <li *ngFor="let name in dropDownArray">{{name}}</li>
         </ul>

  </div>
Run Code Online (Sandbox Code Playgroud)

javascript angular2-template angular

2
推荐指数
1
解决办法
630
查看次数