Jadi, saya membuat objek tiruan sebagai variabel statis di tingkat kelas seperti ... Di satu tes, saya ingin Foo.someMethod()
mengembalikan nilai tertentu, sedangkan di tes lain, saya ingin mengembalikan nilai yang berbeda. Masalah yang saya alami adalah sepertinya saya perlu membangun kembali tiruan agar ini berfungsi dengan benar. Saya ingin menghindari membangun kembali tiruan, dan hanya menggunakan benda yang sama di setiap tes.
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.
}
}
Dalam tes kedua, saya masih menerima 0 sebagai nilai ketika testObj.bar () dipanggil ... Apa cara terbaik untuk menyelesaikan ini? Perhatikan bahwa saya tahu saya bisa menggunakan tiruan yang berbeda Foo
dalam setiap tes, namun, saya harus mengaitkan beberapa permintaan mockFoo
, yang berarti saya harus melakukan chaining di setiap tes.