Por lo tanto, estoy creando un objeto simulado como una variable estática en el nivel de la clase de esta manera ... En una prueba, quiero Foo.someMethod()
devolver un cierto valor, mientras que en otra prueba, quiero que devuelva un valor diferente. El problema que tengo es que parece que necesito reconstruir los simulacros para que esto funcione correctamente. Me gustaría evitar reconstruir los simulacros y usar los mismos objetos en cada prueba.
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.
}
}
En la segunda prueba, sigo recibiendo 0 como valor cuando se llama a testObj.bar () ... ¿Cuál es la mejor manera de resolver esto? Tenga en cuenta que sé que podría usar un simulacro diferente Foo
en cada prueba, sin embargo, tengo que encadenar varias solicitudes mockFoo
, lo que significa que tendría que encadenar en cada prueba.