2017-03-03 62 views
1

我剛剛開始使用Angular2,但我嘗試測試我編寫的每個組件。測試具有傳遞依賴性的Angular2組件

當我編寫組件測試時,我必須初始化TestBed,以便測試組件可以解決所有(傳遞)依賴關係。

現在我能想到的三種方法

  1. 含試驗下的部件導入整個模塊 - 它應該申報或導入所有必需的依賴
  2. 顯式聲明的測試代碼
  3. 模擬所有所有的依賴依賴關係 - 所以他們沒有自己的依賴關係

我想第一個解決方案可能會導致問題,當我需要嘲笑的東西,在主模塊中聲明。第二個需要我手動更改所有依賴測試,當我嘗試添加任何新的依賴關係組件。我沒有測試第三個,所以我不知道它是否可行。

處理這個問題的最佳方法是什麼?

回答

0

我實現了與原始相同的選擇器和輸入,但沒有邏輯的依賴組件的模擬。

這樣我就可以獨立地測試我的組件 - 檢查它是否正確使用了依賴組件,但不關心任何傳遞依賴和其他實現細節。

我的靈感來自於:angular2 test, how do I mock sub component

+0

雖然這是它有很多的限制,因爲你只是嘲諷標籤不更換類的實現本身一個有效的方法。像這樣的東西不會工作。 '@ViewChild(SubComponent)sc;然後再調用sc.callFn()'。由於模擬實現具有不同的類名,所以Testbed注入器將永遠不會找到這個類。 – Julian