2017-06-14 83 views
1

我想單元測試使用自定義管道的組件。我想爲我的測試提供transform方法的假實施。測試組件時覆蓋管道

我發現有可能override組件,模塊,管道等,但我不知道如何覆蓋組件的行爲(實現)。

我曾試圖向我提供定製類作爲管的替代品,它不工作:

TestBed 
    .configureTestingModule({declarations: [MyPipe]}) 
    .overridePipe(MDatePipe, {set: MyFakePipe}) 

我也發現了類似的問題對SO How to mock Pipe when testing Component,但建議的解決辦法是建立完整的新管提供給測試模塊的declarations,這在我看來有點過分。

如果overridePipe不會讓我覆蓋transform的實現有可能得到創建的MyPipe類的實例和spyOn它呢?

var pipe = TestBed.get(MyPipe); 

也沒有工作。

回答

0

我還沒有找到一種方法來覆蓋管道的行爲,所以我最終提供假的服務到真正的管道,以便我可以嘲笑它的行爲。

另一種解決方案是爲回答問題How to mock Pipe when testing Component所建議的測試創建假冒管道實施。

+0

還有任何想法如何做到這一點? =) –

+0

@SharikovVladislav,基本上就是這樣。我的管道使用服務,我僞造服務來定義管道的行爲。在我的研究中,另一種解決方案是在測試中創建一個假冒的管道,並用相同的名稱進行註冊。這也可能會奏效,但需要更多的工作。 –

+0

我試過這個:'在我的研究過程中的另一種解決方案是在測試中創建一個假冒的管道,並用相同的名稱進行註冊。這是行不通的。 –