#java #junit #mockito #powermock
#java #junit #mockito #powermock
Вопрос:
Я пытаюсь протестировать метод с использованием mockito и powermockito, этот метод внутренне вызывает метод, который возвращает void, я хотел издеваться над этим методом, поскольку меня не волнует результат этого метода. я пытался это сделать, но не смог найти решение, пожалуйста, помогите мне в этом.
Я пытаюсь использовать powermockito как
SearchProcedureCodeControllerBean mock = mock(SearchProcedureCodeControllerBean.class);
PowerMockito.doNothing().when(mock).setErrorMessage((String)anyObject(), Mockito.anyList().toArray(), (String)anyObject(), (String)anyObject());
setErrorMessage — это метод void, сигнатура для этого метода выглядит следующим образом
public void setErrorMessage(String errorName, Object[] arguments,
String messageBundle, String componentId) {
}
Комментарии:
1. Издевающийся класс под тестом — это запах, что вы делаете что-то необычное
Ответ №1:
Вы можете заглушить метод только для издеваемого объекта. Тестируемый объект определенно не издевается. С помощью Power Mockito вы можете заглушить статические методы, это не ваш случай. Если вас не волнует поведение метода, просто оставьте его таким. Это void, поэтому это, по сути, не имеет значения. Если это произойдет, и вы хотели бы подавить его влияние, это будет означать, что реальная проблема связана с дизайном, поскольку тестируемый класс несет слишком большую ответственность. Извлеките метод в другой класс, а затем смоделируйте его.
Комментарии:
1. Спасибо за ответ, мне нужна еще одна помощь от вас, я пытаюсь издеваться над абстрактным методом, возможно ли это. поскольку он возвращает нулевое значение для меня
2. Конечно, вы можете. Если вы столкнулись с проблемой, перейдите к главному и отправьте другой вопрос.