Как имитировать контроллеры/конечные точки отдыха для модульного тестирования в 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 группы, модульные тесты и интеграционные тесты. Единичные тесты общеизвестны, и в тестах интеграции я тестирую все, что находится вне самого приложения (например, базы данных) и между ними.

Я запускаю модульные тесты, используя макет в базе данных памяти, когда это необходимо, и тесты интеграции с базой данных с той же структурой, что и производственная, но не с той же базой данных.

Я надеюсь, что мой подход поможет вам.