Рассмотрим следующий метод:
public boolean isACertainValue() {
if(context.getValueA() != null && context.getValueA().toBoolean() == true) {
if(context.getType() != null && context.getType() == ContextType.certainType) {
return true;
}
}
return false;
}
Я не писал этот код, он уродливый, черт возьми, он полностью сложный, но я должен работать с ним.
Теперь я хочу протестировать метод, который полагается на вызов этого метода.
Я думал, что смогу справиться с этим:
Mockito.when(spy.isACertainValue()).thenReturn(true);
, потому что в этом случае я хочу проверить.
Но он не работает, поскольку он все еще вызывает метод-тело:/
Я получаю нулевые указатели или, вернее, получаю что-то по строкам
misusing.WrongTypeOfReturnValue; GetLalueA() не может возвращать Boolean. getValueA() должен возвращать ValueA
Итак, я попробовал (как обходной путь):
Mockito.when(contextMock.getValueA()).thenReturn(new ValueA());
а также
Mockito.when(contextMock.getType()).thenReturn(ContextType.certainType);
но затем я получаю нулевой указатель, который, как мне кажется, не способен отлаживать.
Итак, как это делается в этом случае?