Yani, sınıf düzeyinde böyle bir statik değişken olarak bir sahte nesne oluşturuyorum ... Bir testte, Foo.someMethod()
belirli bir değeri döndürmek istiyorum , başka bir testte, farklı bir değer döndürmek istiyorum. Yaşadığım sorun, bu düzgün çalışması için alay yeniden oluşturmak gerekir gibi görünüyor. Alayları yeniden inşa etmekten kaçınmak ve her testte aynı nesneleri kullanmak istiyorum.
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.
}
}
İkinci test, testObj.bar () çağrıldığında hala değer olarak 0 alıyorum ... Bunu çözmek için en iyi yolu nedir? Foo
Her testte farklı bir taklit kullanabileceğimi biliyorum , ancak, birden fazla isteği mockFoo
zincirlemem gerekiyor, yani her testte zincirleme yapmak zorunda kalacağım.