Donc, je crée un objet simulé en tant que variable statique au niveau de la classe comme ça ... Dans un test, je veux Foo.someMethod()
retourner une certaine valeur, tandis que dans un autre test, je veux qu'il retourne une valeur différente. Le problème que j'ai, c'est qu'il semble que je dois reconstruire les maquettes pour que cela fonctionne correctement. Je voudrais éviter de reconstruire les maquettes et utiliser simplement les mêmes objets dans chaque 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.
}
}
Dans le deuxième test, je reçois toujours 0 comme valeur lorsque testObj.bar () est appelé ... Quelle est la meilleure façon de résoudre ce problème? Notez que je sais que je pourrais utiliser une maquette différente de Foo
dans chaque test, cependant, je dois chaîner plusieurs demandes mockFoo
, ce qui signifie que je devrais faire le chaînage dans chaque test.