Angular2模式不会在因果报应中运行
我的angular2应用程序中angular2模式运行良好。然而,我在通过业力进行测试时遇到了问题。我已经和你一起搭建了我的试验台Angular2模式不会在因果报应中运行,angular,karma-runner,angular2-modal,Angular,Karma Runner,Angular2 Modal,我的angular2应用程序中angular2模式运行良好。然而,我在通过业力进行测试时遇到了问题。我已经和你一起搭建了我的试验台 beforeEach(() => { TestBed.configureTestingModule({ imports: [ HttpModule ], providers: [ ApiService,
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpModule
],
providers: [
ApiService,
MockBackend,
UiComponentService,
BaseRequestOptions,
AlertCenterService,
{
provide: Http,
useFactory: (backend: any, options: any) => new Http(backend, options),
deps: [MockBackend, BaseRequestOptions]
},
Overlay,
OverlayRenderer,
Modal
]
});
});
但是,我得到了一个奇怪的DI错误:
Error: No provider for Modal$$1!
Error: DI Error
UiComponentService是我使用模态的地方。试验在添加模态之前进行。我在任何地方都找不到附加了$$1的对Modal的引用,我也不知道它是从哪里来的。我想Modal也缺少依赖项。我见过这样的错误,错误只解释了服务的查找依赖项的问题,而不是它所依赖的依赖项,即使这是根本原因。您如何在主应用程序中配置它?只是通过向提供程序添加模式,还是导入某个Module.forRoot。如果是后者,您应该对测试执行相同的操作 但是 您真的需要为单元测试提供完整的工作模式吗。模拟它可能更好,因为您需要测试的只是服务的行为。我假设服务所做的就是调用Modal上的某个方法。所以这就是你真正需要测试的
let modal;
beforeEach(() => {
modal = { openModal: jasmine.createSpy('openModal') }
...
providers: [
{ provide: Modal, useValue: modal }
]
})
it('', () => {
doSomething()
expect(modal.openModal).toHaveBeenCalledWith(whatever);
})
这只是假设Modal有一个方法openModal。您真正需要测试的是服务调用OpenModel方法,因为这是正在测试的服务的行为。我想模式也缺少依赖项。我见过这样的错误,其中只有错误只解释了服务的查找依赖项的问题,而不是它所依赖的依赖项,即使这是根本原因。您如何在主应用程序中配置它?只是通过向提供程序添加模式,还是导入某个Module.forRoot。如果是后者,你应该为测试做同样的事情。就是这样!我应该早点问。你介意写下来作为回答吗?我想把这归功于你。