Рассмотрим следующий класс (с использованием CDI + сокращенный Restclient)
public class A {
@Inject
Restclient client;
public Object init(String token) {
String b = createB(token);
return c(b);
}
public String createB(String token)
return client.getB(token);
}
public Object c(String b) {
return new C(b);
}
}
Я хочу смоделировать метод createB (токен), так как я не хочу тестировать клиент Rest.Поэтому я сделал следующее:
public class TestA {
@Mock
A a;
@Test
public void testA() {
when (a.createB("123")).thenReturn("FakeB");
Object c = a.init("123");
assertNotNull(c); // Fails
}
}
По какой-то причине этот тест JUnit 4 + Mockito 2.18 не прошел, так как 'c' пуст, но мои методы работают правильно (проверили их).
Если я использую @Spy для A, я получаю NPE, потому что мой Restclient не инициализируется (даже если я добавляю клиент @Mock RestClient) и когда (...). ThenReturn (...) фактически вызывает реальный метод...
Понятия не имею, как это исправить, даже если это кажется таким простым ...