Angular 如何测试“角度材质”对话框是否打开

Angular 如何测试“角度材质”对话框是否打开,angular,angular-material,angular-test,Angular,Angular Material,Angular Test,我正在编写一个单元测试来检查函数调用是否打开了材质对话框元素。我正在变得虚假,而预期的结果是真实的。组件功能是: x、 组件技术 openCartDialog(): void { this.dialog.open(CartComponent); this.isCartDialogOpen = true; } 我的x.component.spec.ts文件包含以下代码和测试: export class DialogMock { open(): void {

我正在编写一个单元测试来检查函数调用是否打开了材质对话框元素。我正在变得虚假,而预期的结果是真实的。组件功能是:

x、 组件技术

openCartDialog(): void {
        this.dialog.open(CartComponent);
        this.isCartDialogOpen = true;
}
我的x.component.spec.ts文件包含以下代码和测试:

export class DialogMock {
    open(): void {
        return;
    }
}

beforeEach(async(() => {

    TestBed.configureTestingModule({
        declarations: [MainPageComponent, CartComponent, ConfirmButtonComponent],
        imports: [RouterTestingModule, HttpClientModule, MatTabsModule, MatDialogModule],
        providers: [
            { provider: MatDialog, useClass: DialogMock },
        ],
    }).compileComponents();
}));

beforeEach(() => {
    fixture = TestBed.createComponent(MainPageComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
});


it('should open the cart dialog', () => {
       component.openCartDialog();
       expect(component.isCartDialogOpen).toBeTrue();
});
我认为问题在于我的beforeach()中,CartComponent没有正确实例化。Cart组件在其模板中也使用其他组件…我在代码中只包括ConfirmButtonComponent,但还有更多


谢谢你的帮助

可能错误来自
component.isUserGuideOpen
当它在组件中时应该是
component.isCartDialogOpen
我将代码复制到堆栈溢出中时出错。两个变量都有相同的名称我认为,通过测试组件是否调用dialog.open()是一种更好的测试方法,而实际测试dialog.open是否实际打开了对话框,这样你就可以独立于其他类来测试这个类。您可以模拟/监视对话框。打开并检查是否已使用参数等调用/调用它。这很有意义,谢谢。它还简化了我的其他测试。打开对话框会返回对该对话框的引用。将其保存在某个位置,并调用对话框
getState()
,如果该对话框打开,则其计算结果为true。