我正在使用ngx-bootstrap(3.0.1)ModalService来显示包含组件的模式对话框
this.modalRef = this.modalService.show(MyDialogComponent);
我在单元测试中有这个(由玩笑开办)
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [MyComponent, MyDialogComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [MyService],
imports: [
ModalModule.forRoot(),
],
})
.compileComponents();
}));
这个顽固的错误告诉我无法解析BsModalService的所有参数:(?,?)。我能找到的答案是提到缺少适当的@Injectable()
装饰器,但这显然超出了我的控制范围,此外,它无关紧要且具有误导性-装饰器存在于ngx-bootstrap的源代码中。
我试图显式提供软件包中的所有组件和服务(而不是ModuleWithProviders,但这也无济于事。
没有想法。
尝试内外注释
import 'core-js/es7/reflect';
在plyfills.ts中。似乎无关紧要。除非有一个与我不相关的Jest配置设置?
答案 0 :(得分:0)
尝试在您的polyfills.ts中导入core-js / es7 / reflect,这是使您的测试正常进行所必需的
import 'core-js/es7/reflect';
答案 1 :(得分:0)
随着BsModalService的服务动态填充DOM(entryComponents),您可以通过将BrowserDynamicTestingModule API添加到configureTestingModule中来使用它:
self.process_queue
}));
使用dispatch API触发模板元素(例如按钮),然后检查它是否在DOM中弹出。
这是一个{@ 3}},带有一个实时示例。
注意::由于ngx stackblitz将DOM填充为angular根节点的兄弟,因此我无法使用Angular API选择模式元素,因此我不得不使用DOM BsModalService。如果有人有更好的方法,请发表评论,以便我进行更新