Mam następujące klasy Java:Zagnieżdżony metoda wyśmianie w Mockito
public class A
{
@Autowired
private B b;
public int aFn()
{
int something = b.bFn();
}
}
public class B
{
@Autowired
private C c;
public int bFn()
{
int something = c.cFn();
}
}
public class C
{
public int cFn()
{
return 231;
}
}
a następujący test używając Mockito przetestować powyższy kod:
public class test
{
@Autowired
private A a;
private C c;
@Test
public void testA()
{
c = mock(C.class);
when(c.cFn(),anyInt()).thenReturn(something);
assertEquals(0, a.aFn());
}
}
Kiedy debugowanie Testa, uważam, że prawdziwa c.Cfn() zostaje wykonana, a nie wyśmiewana. Czy jest coś, co robię niewłaściwie tutaj? Proszę o pomoc!
Chcę użyć kodu pośredniczącego c.cFn, a nie b.bFn. Co należy zrobić w tym celu? – user1471283
To jest zła praktyka. Testy jednostkowe powinny przetestować jedną klasę w izolacji pozostałych. Ale jeśli tego chcesz, stwórz fałszywą C, stwórz B i wstrząśnij w niej pozorowaną C, następnie stwórz A i wstrzyknij B wewnątrz. 'A -> B -> mockC'. –
Dzięki. Zmodyfikuj swoją odpowiedź zgodnie z tym. – user1471283