Как имитировать контроллеры/конечные точки отдыха для модульного тестирования в Play Framework 2.x [Java]
Мы разрабатываем проект с Java на Play Framework 2.x и располагаем конечными точками отдыха. Также у нас есть несколько тестовых примеров для них, например:
@Test
public void testLogout() throws Exception {
FakeRequest request = new FakeRequest("GET", "/product/api/v1/logout");
Result result = route(request);
assertThat(status(result)).isEqualTo(OK);
assertThat(contentType(result)).isEqualTo("application/json");
assertThat(contentAsString(result)).contains("result");
}
С другой стороны, у нас есть некоторые методы [например, register()
], которые не могут быть протестированы в производственной базе данных.
Каков правильный способ тестирования методов, которые влияют на базу данных prod? Я думаю, насмехается, но я не уверен, и я не знаю, как это сделать. Если насмехается, это хороший выбор, есть ли какой-нибудь рабочий пример?
Пожалуйста, дайте мне несколько советов по этой проблеме.
Ответы
Ответ 1
Я думаю, что правильный способ - не тестировать производственную базу данных.
Я делю тесты на 2 группы, модульные тесты и интеграционные тесты. Единичные тесты общеизвестны, и в тестах интеграции я тестирую все, что находится вне самого приложения (например, базы данных) и между ними.
Я запускаю модульные тесты, используя макет в базе данных памяти, когда это необходимо, и тесты интеграции с базой данных с той же структурой, что и производственная, но не с той же базой данных.
Я надеюсь, что мой подход поможет вам.