8

アプリのテストにOCMockを使用しようとしています。しかし、expectをどこで使用する必要があり、スタブをどこで使用するのか混乱していますか?誰か助けてもらえますか?

4

1 に答える 1

18

基本的な違いはこれです:あなたは起こらなければならないexpectこと、そして起こるかもしれないこと。stub

モックオブジェクトが失敗する方法は2つあります。予期しない/スタブされていないメソッドが呼び出されるか、予期されるメソッドが呼び出されないかのいずれかです。

  1. 予期しない呼び出し。モックオブジェクトがスタブまたは予期されていないメッセージを受信すると、すぐに例外をスローし、テストは失敗します。
  2. 予想される呼び出し。モックを呼び出すとverify(通常はテストの最後に)、期待したすべてのメソッドが実際に呼び出されたことを確認します。そうでない場合、テストは失敗します。

この動作を変更するモックには、ナイスモックとパーシャルモックの2種類があります。優れたモックは、メソッドをスタブ化する必要を防ぎます。基本的に、予期しない呼び出しが発生する可能性があります。部分モックは、実際のオブジェクトに送信されるメッセージを傍受する方法です。期待するメッセージや部分的なモックのスタブは、モックオブジェクトに送信されます。他のすべてのメッセージは実際のオブジェクトに送信されます。素敵なモックと部分的なモックの両方で、予期しない呼び出しでテストが失敗することはありません(上記のルール#1)。

于 2012-06-19T16:37:48.137 に答える