Quindi, sto creando un oggetto simulato come una variabile statica a livello di classe in questo modo ... In un test, voglio Foo.someMethod()
restituire un certo valore, mentre in un altro test, voglio che restituisca un valore diverso. Il problema che sto riscontrando è che sembra che abbia bisogno di ricostruire le beffe per farlo funzionare correttamente. Vorrei evitare di ricostruire le beffe e usare gli stessi oggetti in ogni test.
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.
}
}
Nel secondo test, sto ancora ricevendo 0 come valore quando viene chiamato testObj.bar () ... Qual è il modo migliore per risolverlo? Nota che so che potrei usare una derisione diversa Foo
in ogni test, tuttavia, devo concatenare più richieste mockFoo
, il che significa che dovrei fare il concatenamento in ogni test.