ng-reflect vs.' real'测试期间nativeElement上的属性值

时间:2018-01-15 08:25:31

标签: angular testing karma-jasmine

我尝试使用karma / jasmine nut测试angular4 / 5中的自定义输入元素我无法弄清楚我是否错过了一件事。

有人可以指出我正确的方向吗?

所以我有一个自定义输入组件,如:

<div>
  <input class="input-class" [type]="inputType" [required]="required" [disabled]="disabled"          [(ngModel)]="value" (input)="handleChange()" />
  <label>...</label>
</div>

现在我想测试nativeElement上的disabled属性,例如:

it('can be disabled', () => {
formControl.disable();
    let inputElement = fixture.debugElement.query(By.css('input-element'))
    fixture.detectChanges();
    // works:
    expect(inputElement.attributes.getNamedItem('ng-reflect-is-disabled')).toBeTruthy();
    // works not:
    expect(inputElement.disabled).toBeTruthy();   
    // also doesn't work:
    expect(inputElement.attributes.getNamedItem('disabled')).toBeTruthy();
  });

为什么我可以看到ng-reflect属性的更改而不是原始的?我是否错过了触发生命周期事件的电话?我有没有使用量角器测试?

1 个答案:

答案 0 :(得分:1)

所以我想通了。

fixture.whenStable().then(() => {
  expect(inputElement().attributes.getNamedItem('disabled')).toBeTruthy();
  expect(inputElement().disabled).toBeTruthy();
});

做伎俩。