У меня есть действие Struts 1, и я хочу протестировать его отдельно.
Это действие выполняется следующим образом:
- загрузка данных с использованием параметров из запроса
- построить представление этих данных на основе xml
- отправить этот ответ напрямую клиенту
Я использую jMock для тестирования, но здесь есть одно сомнение.
Мой первый тест -
public void shouldActionInvocationPrintValidResponse() {
ProcessingAction action = new ProcessingAction();
DBService service = mock(DBService.class);
List records = new ArrayList();
when(service.loadData()).thenReturn(records);
ResponseBuilder builder = mock(ResponseBuilder.class);
when(builder.buildResponse(records)).thenReturn("fake response");
action.execute(null, null, null, null);
assertEquals("fake response", writer.getContentWritten());
}
И мой код продукта оценивается следующим образом:
public String execute(...) {
List recordsList = service.loadData();
String response = responseBuilder.buildResponse(recordsList);
response.getWriter().print(response);
}
Я сомневаюсь, что такой тест здесь не слишком велик. Я проверяю весь успешный поток здесь. Разве не должно быть отдельных тестов для проверки каждого отдельного вызова зависимостей в их собственных тестах?
Интересно, потому что у меня были проблемы с названием этого теста. Мои идеи в начале были чем-то вроде
shouldFetchDataThenFormatThemAndSendResponse
Поскольку это все тесты, название показывает, что это, вероятно, слишком много (посмотрите на "и", например, в названии теста)
И должен ли я написать весь тест сразу или просто пошагово добавлять вызовы зависимостей?
EDIT:
Предоставлен подробный код теста и действия.