2017-12-14 6 views
0
mockModule = OCMPartialMock(module); 
OCMStub([mockModule send:@"FOO"]).andReturn(YES); 
OCMStub([mockModule send:@"FOO"]).andReturn(NO); 

この例では、単純なモックモジュールを使用していますが、文字列の送信時にYES/NOを返すスタブをいくつか設定すると、同じ文字列を2回設定すると新しい値ではなく、最初の値のみを返します。どのように私はそれが最近設定された値で応答することができますOCMockとオーバーライドスタブの値

BOOL answer = [module send:@"FOO"] 
//answer should be NO, but is YES 

:問題については、この例では

はので、私のようなコールを期待するように実証されていますか?

答えて

1

期待のメソッドを使用できます。彼らはのために意図されているまさにではないのですが、それはいくつかの意味を成してい

mockModule = OCMPartialMock(module); OCMExpect([mockModule send:@"FOO"]).andReturn(YES); OCMStub([mockModule send:@"FOO"]).andReturn(NO);

。あなたは基本的に言っている、私はが呼び出され、実際にそれが起こったときに、メソッドをスタブしたいと思う。

また、スタブを「積み重ねる」ことができた場合、何が間違っているかを把握することは非常に困難です。スタブの最初の呼び出しが行われない場合、2番目の呼び出しは最初の呼び出しのための値を取得します。

+0

フィードバックに感謝します。 Androidでの私の単体テストでは、私はMockitoを使い、連鎖機能を持っています。私のアプリでは、状態を持つ外部デバイスとの通信をシミュレートするのに使っているので、非常に便利です。 OCMockで同じ結果を得るには、 "andCall"を使用して自分のメソッドを呼び出すことができました(例えば、これは、順番に返す項目のリストを含んでいます。 – xceph

関連する問題