如何解决beforeEach 在 MockRender 调用中没有错误地死亡
我正在使用 ngMocks 测试一个组件,我的规范一直失败,“formGroup 需要一个 FormGroup 类型的实例,请提供一个”。
我能够验证 component
实际上从未设置过。实际上,在我调用 MockRender
的标记行之后的每一行都未在 beforeEach
中调用,因此未设置组件。
如您所见,我尝试为组件中的 formGroup
提供一个默认值,以便在 MockRender
执行其操作时阻止问题发生,但这并没有改变任何事情。
任何想法 a) 我能做些什么来解决这个问题? b) 为什么在我的规范中没有在 MockRender
而不是 expect
上抛出错误?
规格:
describe('CombinedMultiControlFormFieldComponent',() => {
let component: CombinedMultiControlFormFieldComponent;
let fixture;
const mockDialog = {
open() {
}
};
beforeEach(async () => {
return MockBuilder(CombinedMultiControlFormFieldComponent)
.keep(MatFormFieldModule)
.keep(FormsModule)
.keep(ReactiveFormsModule)
.mock(ConcatFormGroupValuesPipe)
.provide({provide: MatDialog,useValue: mockDialog});
});
beforeEach(() => {
fixture = MockRender(CombinedMultiControlFormFieldComponent); <-------------
component = fixture.componentInstance;
component.formGroup = fg;
fixture.detectChanges();
});
it('should create',() => {
expect(component).toBeTruthy();
});
});
TS:
export class CombinedMultiControlFormFieldComponent {
@input()
formGroup: FormGroup = new FormGroup({f1: new FormControl('')});
@input()
displayLabel: string;
constructor(private dialog: MatDialog) {
}
}
编辑:我在下面的答案中提供了修复,尽管我仍然不太明白为什么会出现错误。
解决方法
仍然不太确定为什么会发生这种情况,但通过在 MockRender
调用中提供 formGroup 作为参数,我能够摆脱错误。
beforeEach(() => {
fixture = MockRender(CombinedMultiControlFormFieldComponent,{formGroup: fg}); <-----
component = fixture.componentInstance;
fixture.detectChanges();
});
我仍然很想学习如何正确使用 ngMocks。因此,如果有人能解释原因,请告诉我们:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。