[英]Angular2-Modal won't run in Karma
我的angular 2應用程序中的angular2-modal運行良好。 但是,我在通過Karma進行測試時遇到問題。 我已經建立了我的測試床
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是我使用模態的地方。 在添加模態之前,測試正在進行。 我找不到對Modal的引用,並在任何地方附加了$ 1,而且我不知道它來自何處。
我想模態也缺少依賴項。 我見過這樣的錯誤,其中的錯誤僅解釋了查找的依賴項(服務)的問題,而不是它所依賴的依賴項(即使這是根本原因)。 您如何在主應用程序中對其進行配置? 僅僅是通過將Modal添加到提供程序,還是要導入一些Module.forRoot()。 如果是后者,則應該對測試執行相同的操作
您是否真的需要完整的Modal
才能進行單元測試。 模擬它可能更好,因為您需要測試的只是服務的行為。 我假設所有服務所做的就是在Modal
上調用某些方法。 這就是您真正需要測試的
let modal;
beforeEach(() => {
modal = { openModal: jasmine.createSpy('openModal') }
...
providers: [
{ provide: Modal, useValue: modal }
]
})
it('', () => {
doSomething()
expect(modal.openModal).toHaveBeenCalledWith(whatever);
})
這只是假設Modal
具有openModal
。 您真正需要測試的是服務調用了openModal
方法,因為這就是被測試服務的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.