私はクラスレベルで静的変数としてモックオブジェクトを作成しています... 1つのテストでは、Foo.someMethod()
を特定の値に戻したいが、別のテストでは別の値を返すようにしたい。私が抱えている問題は、正しく動作するようにモックを再構築する必要があるということです。私はモックを再構築しないようにしたいですし、各テストで同じオブジェクトを使用するだけです。第二の試験で Mockitoモックオブジェクトに次回呼び出されたときに何か別のものを返すように指示するには?
class TestClass {
private static Foo mockFoo;
@BeforeClass
public static void setUp() {
mockFoo = mock(Foo.class);
}
@Test
public void test1() {
when(mockFoo.someMethod()).thenReturn(0);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), receiving 0 as the value
}
@Test
public void test2() {
when(mockFoo.someMethod()).thenReturn(1);
TestObject testObj = new TestObject(mockFoo);
testObj.bar(); // calls mockFoo.someMethod(), STILL receiving 0 as the value, instead of expected 1.
}
}
は、私はまだこの問題を解決する最良の方法は何ですか... testObj.bar()が呼び出された値として0を受けていますか?私は
Foo
という別のモックを各テストで使うことができますが、
mockFoo
から複数のリクエストをチェーンしなければならないことに注意してください。つまり、各テストでチェインを行う必要があります。
ニース。それを知らなかった。 – OliverS
これは私の質問を解決しました、おかげでトニー! – seanhodges
私はあなたが.return()がvarargsを取るので、コードを短縮することができるという事実を利用することもできると思います:when(mockFoo.someMethod())。thenReturn(0、1、-1); –