Angular 我怎样才能单元测试一个启动p按钮是否被禁用?

Angular 我怎样才能单元测试一个启动p按钮是否被禁用?,angular,unit-testing,primeng,Angular,Unit Testing,Primeng,我正在写一个组件来包装(一些)启动按钮。我试图编写一个单元测试,根据外部组件上的一些设置检查按钮是否被禁用 但是,禁用字段始终未定义?我可以在Karma/Jasmine屏幕上看到它确实被禁用了,所以我很困惑为什么我不能让测试工作 html模板包括: <p-button id="submit" label="Submit" [disabled]="!enableSubmit""> </p-button> 结果是: Expected undefined to equ

我正在写一个组件来包装(一些)启动按钮。我试图编写一个单元测试,根据外部组件上的一些设置检查按钮是否被禁用

但是,禁用字段始终未定义?我可以在Karma/Jasmine屏幕上看到它确实被禁用了,所以我很困惑为什么我不能让测试工作

html模板包括:

<p-button id="submit" label="Submit" [disabled]="!enableSubmit"">
</p-button>
结果是:

    Expected undefined to equal true.
    Error: Expected undefined to equal true.

无论出于何种设计原因,禁用的标记实际上并不存在于Html中的外部priming p-button元素上

取而代之的是一个内部按钮,它保存着实际的禁用标志,测试可以稍微修改如下:

  • 更改css选择器以查找内部按钮
  • 将本机元素类型更改为HtmlButtoneElement
  •     Expected undefined to equal true.
        Error: Expected undefined to equal true.
    
        fit('should disable submit button', done => {
            component.enableSubmit = false;
    
            fixture.detectChanges();
    
            fixture.whenStable().then(() => {
                const elem = fixture.debugElement.query(By.css('#submit > button'));
                const button = elem.nativeElement as HTMLButtonElement;
                expect(button.disabled).toEqual(true);
                done();
            });
        });