2016-10-15 34 views
2

後我已經簡單地添加在它一個SharedComponent共享模塊,並在主應用程序組件中使用該組分:角-CLI測試失敗創建共享模塊

<acs-shared></acs-shared> 

所有這些成分的作用是顯示「您好,世界!「使用組件上的屬性:

<h1>Hello, {{name}}!</h1> 

這一切都npm start運行項目的時候,但現在運行npm test無法正常工作,所以確實$(npm bin)/karma start ./karma.conf.js。第一個失敗是它無法創建組件,因爲它無法識別'acs-shared'元素。測試使用其他組件或模塊的組件需要做些特殊的事情嗎?

Chrome 54.0.2840 (Windows 10 0.0.0) App: AngularCliStarter should create the app FAILED 
    'acs-shared' is not a known element: 

該項目可在GitHub上:https://github.com/JasonGoemaat/angular-cli-starter

回答

5

您需要將SharedModule導入TestBed配置。什麼你與測試牀做的事情是一樣從頭配置的@NgModule測試環境

TestBed.configureTestingModule({ 
    imports: [ SharedModule ], 
    declarations: [ 
    AppComponent 
    ], 
    providers: [] 
}); 
+0

真棒,非常有意義!我導入了'AppModule',它工作。是否有任何理由不包含組件實際所在的模塊?似乎這是一個更好的測試,因爲我可以忘記在我的AppModule中導入SharedModule,看起來測試會成功,但應用程序不起作用。您也可以跳過聲明。 –

+0

個人而言,這只是偏好,我試圖保持測試全部受控制,並限制不必要的變量。就AppModule而言,我從不將其導入測試測試。 AppModule有太多的事情要做。這是您導入一堆提供程序,BroswerModule,RoutingModules和一些其他您不需要的東西的地方。即使在共享模塊的情況下,如果它有太多的事情發生,我可能只是在測試平臺上聲明組件,而不是導入共享模塊。再次,這只是我的偏好。每個人都會擁有自己的 –

+1

儘管你測試得越多,我想你會開始想出你自己的風格和偏好。 –