我如何测试试图打开以组件作为内容的 NgBootstrap 模态的服务?
How Can i Test a Service Attempting to Open an NgBootstrap Modal With a Component as Content?
我有一个简单的服务,可以注入 NgbModal
并在发生请求错误时尝试以编程方式打开模式:
handleError = (error): Observable<any> => {
const modalRef = this.modalService.open(ChangeError);
return Observable.throw(error);
};
当我尝试测试包含此方法的服务时,实例化失败并显示消息 Error: No component factory found for NgbModalBackdrop. Did you add it to @NgModule.entryComponents?
。但是它在模块的 @NgModule
元数据中定义:
@NgModule({
imports: [
CommonModule,
FormsModule,
NgbModal
],
declarations: [
FirstComponent,
SecondComponent
],
exports: [],
providers: [],
entryComponents: [
ChangeError,
NgbModalBackdrop
]
})
export class MyModule { }
非常感谢任何解决此问题的想法。当 运行 在浏览器中执行代码时不会产生异常,但无法真正打开模式。
通过将作为参数传递给 TestBed.configureTestingModule
的配置对象的 imports
成员从 imports: [NgbModal, ...]
更改为 imports: [NgbModule.forRoot(), ...]
解决了这个问题
之前:
TestBed.configureTestingModule({
imports: [NgbModal, ...]
...
}
之后:
TestBed.configureTestingModule({
imports: [NgbModule.forRoot(), ...]
...
}
看起来有点笨拙,但有效。
我有一个简单的服务,可以注入 NgbModal
并在发生请求错误时尝试以编程方式打开模式:
handleError = (error): Observable<any> => {
const modalRef = this.modalService.open(ChangeError);
return Observable.throw(error);
};
当我尝试测试包含此方法的服务时,实例化失败并显示消息 Error: No component factory found for NgbModalBackdrop. Did you add it to @NgModule.entryComponents?
。但是它在模块的 @NgModule
元数据中定义:
@NgModule({
imports: [
CommonModule,
FormsModule,
NgbModal
],
declarations: [
FirstComponent,
SecondComponent
],
exports: [],
providers: [],
entryComponents: [
ChangeError,
NgbModalBackdrop
]
})
export class MyModule { }
非常感谢任何解决此问题的想法。当 运行 在浏览器中执行代码时不会产生异常,但无法真正打开模式。
通过将作为参数传递给 TestBed.configureTestingModule
的配置对象的 imports
成员从 imports: [NgbModal, ...]
更改为 imports: [NgbModule.forRoot(), ...]
之前:
TestBed.configureTestingModule({
imports: [NgbModal, ...]
...
}
之后:
TestBed.configureTestingModule({
imports: [NgbModule.forRoot(), ...]
...
}
看起来有点笨拙,但有效。