我終於強加了一些TDD在我正在處理的一個項目上,並跑到邊緣......我知道我想要的代碼,但不知道如何測試吧:)OCMock測試一個對象被分配,並調用它的一個方法
我在尋找的實現是:
- (void) doSomething
{
FooBuilder *foo = [[FooBuilder alloc] init];
[foo doSomethingElseWithCompletionBlock:^{
[self somethingDone];
}];
}
所以我想我的測試來驗證)測試方法分配一個新的FooBuilder
和b)該方法然後調用新對象的一種方法。
我該如何解決這個問題?我開始嘗試嘲笑類方法,但很快就確定了這條路是瘋狂的。
注意我沒有在這個測試中測試FooBuilder本身,只是在那裏進行了合作。
喬恩,感謝您的關注和詳細的回覆 - 但我想我在這裏錯過了一些東西。你診斷被測試的類和'FooBuilder'類之間的耦合是問題。在這樣做的過程中,我覺得你正在簡化更復雜的事情。我有一個顯示Foos的對象Bar;要做到這一點,它需要用FooBuilder構建一個Foo。我覺得你要求我介紹一般性,我不需要僅僅爲了簡化測試。 – dpassage
我今天早上醒來意識到問題實際上只是一個類的依賴注入。所以我完全重寫了我的答案。試試它的大小。 ...如果它仍然感覺過於複雜,讓我知道,我會嘗試進一步解釋。 –
我仍然認爲你沒有得到我所要求的。我的問題是如何驅動OCMock API以確保我的被測對象正在進行正確的出站調用。你仍然試圖將普遍性注入一個不需要它的類中。 – dpassage