【发布时间】:2018-12-07 23:21:42
【问题描述】:
我正在尝试为已禁用分配给布尔值的按钮编写单元测试。
html 看起来像:
<button *ngIf="!data" id="createBtn" mat-button color="primary" (click)="submitNewCase()" [disabled]="disableCreate">{{ 'ACTIONS.create' | translate }}</button>
我的单元测试:
beforeEach(() => {
fixture = TestBed.createComponent(CaseComponent);
component = fixture.componentInstance;
fixture.detectChanges();
submitEl = fixture.debugElement.query(By.css('button'));
});
it('DisableCreate set to true disables the submit button', () => {
component.disableCreate = true;
fixture.detectChanges();
expect(submitEl.nativeElement.disabled).toBeTruthy();
});
it('DisableCreate set to false enables the submit button', () => {
component.disableCreate = false;
fixture.detectChanges();
expect(submitEl.nativeElement.disabled).toBeFalsy();
});
我的第二个单元测试成功了,而我的第一个没有。我得到了一个“预期虚假是真实的。”。我找不到失败的地方和原因。
任何帮助将不胜感激。
【问题讨论】:
-
数据怎么样,我看到 *ngIf="!data" 你必须将数据设置为 false,可能是按钮元素没有创建
-
我通过在 fixture.detectChanges() 之前添加“component.data = null”来试一试,但第一次测试仍然出现相同的错误
-
你能显示 configureTestingModule 部分吗,因为我在 Karma 测试中的 [disabled] 属性有问题 => 无法绑定到 'disabled',因为它不是 'th' 的已知属性
-
@Deunz 这很可能是准确的,因为您使用的是 th 元素。这是针对具有对 disabled 属性的本机支持的按钮元素。 ===>w3schools.com/tags/att_disabled.asp
-
感谢输入,我只是缺少 MatSortModule,导入它解决了问题 :) MatTableModule 还不够,你必须导入 SortModule。
标签: angular unit-testing jasmine karma-jasmine