テストクラスには、よく使用されるBar
オブジェクトを作成するプライベートメソッドがあります。Bar
コンストラクタが呼び出されますsomeMethod()
私の嘲笑オブジェクトのメソッドを:
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
私がチェックしたいテストメソッドのいくつかでは、someMethod
その特定のテストによっても呼び出されました。次のようなもの:
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
モックされたオブジェクトがsomeMethod
2回呼び出されたため、これは失敗します。私のテストメソッドが私のgetBar()
メソッドの副作用を気にしたくないので、終了時にモックオブジェクトをリセットするのは合理的でしょうgetBar()
か?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
ドキュメンテーションでは、モックオブジェクトのリセットは一般にテストの誤りを示していると示唆されているため、お願いします。しかし、これは私には問題ないと感じています。
代替案
別の選択肢は呼び出しているようです:
verify(mockedObject, times(2)).someMethod();
私の意見では、各テストでの期待値を知るgetBar()
必要があります。