0

OCMockObjectの「verify」メソッドが何をするのか混乱していますが、モックオブジェクトでメソッドが呼び出されたかどうかをテストするためにこれを呼び出す必要がありますか?テストの実行後に実際に「verify」を呼び出さなくても、モックオブジェクトで呼び出されるメソッドの期待値を完全に設定しないと、テストが失敗します。

例えば:

試験方法で

OCMockObject *mockView = [OCMockObject mockForClass:[UIView class]];
[controller setValue:mockView forKey:@"sampleView"];
[[mockView expect] setHidden:YES];
[controller processSampleView];
//do I need to call "verify" here?
//    If I don't, I still get test failures if "setHidden:YES" is not called...
[mockView verify];
4

1 に答える 1

2

OCMock サイトの機能の説明には次のように記載されています。

「予想されるメソッドが呼び出されていない場合、検証メソッドは例外を発生させます。」

この:

「expectまたはstubのいずれかで設定されていないモックオブジェクトでメソッドが呼び出されると、モックオブジェクトは例外を発生させます。このフェイルファストモードは、「素敵な」モックを作成することでオフにすることができます:」

そうです、予期しないメソッドを呼び出すと例外が発生します。ただし、上記の例は、verify が呼び出されなくても、予期されるメソッドが呼び出されない場合に例外が発生することを示唆しています。verify を呼び出さないと OCMock へのコードパスがないため、これは不可能のようです。あなたの場合、例外はどこから発生しましたか、つまり、例外のスタックトレースは何ですか? 検証を呼び出す別のテストでモック ビューを再利用することは可能ですか? コントローラインスタンスはテスト間で維持されますか?

于 2012-07-12T15:42:02.393 に答える