Donc, je vais créer un objet fantaisie comme une variable statique au niveau de la classe comme si... Dans un test, je veux Foo.someMethod()
de renvoyer une certaine valeur, alors que dans un autre test, je le veux renvoyer une valeur différente. Le problème que je vais avoir, c'est qu'il semble que j'ai besoin de reconstruire les objets fantaisie à obtenir que cela fonctionne correctement. J'aimerais éviter la reconstruction de l'est se moquer, et il suffit d'utiliser 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 essai, je suis encore reçu 0 comme valeur lorsque testObj.bar() est appelée... Quelle est la meilleure façon de résoudre ce problème? Notez que je sais que je pourrais utiliser un autre en dérision Foo
dans chaque test, cependant, j'ai de la chaîne de multiples requêtes d' mockFoo
, ce qui signifie que je devrais faire de l'enchaînement dans chaque test.