2015-11-16 11 views
5

私は現在、アプリケーションのViewControllerに単体テストを効率的に追加する方法を研究しています。これまでは、特定のView Controllerが別のView Controllerを提示するまで、かなりうまくいきました。OCMockとUIViewController

私はOCMockとXCTestを使用しています。

id partialMock = OCMPartialMock([TestViewController class]); 
[partialMock doSomeStuff]; 
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]); 

を次のようにあなたが見ることができるようにテストがあり、私はpresentViewControllerdoSomeStuff関数内でテストしたビューコントローラに呼ばれたことを確認します。与えられた例は私が現在持っているものの簡略版です。主な違いは、引数viewControllerが別の疑わしいオブジェクトであることを確認することです。

doSomeStuffメソッドがスタブされていないため、呼び出しは実際のTestViewControllerインスタンスに転送され、インスタンスは次にpresentViewControllerを呼び出し、partialMockの検証を起動しません。

紛失しているものがありますか?それとも、私が達成しようとしていることは本当に元に戻すことができますか?あなたは2.10で説明したようandDo(nil)を使用してSUPRESSするメソッドスタブでき

+0

こんにちはマルクを、私はここで間違っているかもしれないが、あなたは、クラスオブジェクトの部分的なモックを設定しています。通常、標準的なモックオブジェクトを設定するには、クラスを使用しますが、部分的には、スパイするオブジェクトから設定する必要があります。この場合、あなたのviewController –

+0

ああ、例は正しくない。私は実際に2つのビューコントローラを持っているので、これは私に何かを考えるようになります。 –

答えて

1
+0

クラスのすべてのインスタンスでそのメソッドをスタブできる方法はありますか?私の気持ちは「いいえ」であり、このメソッドはTestViewControllerクラス自体から呼び出されるため、スタブされたメソッドを使用します。私は自分の問題が何であるかについて100%明確であるとは確信していません –

+0

それはうまくいきます。私はそれ以前に何が間違っていたのか分かりません、アニメーションに関連していたと思います:[OCMArg any]失敗します –

関連する問題