HustleCoder
@HustleCoder

Как быстро и эффективно мокать реляционные БД для тестов?

Какие подходы используете вы?

Я пробовал делать через ArrayList, но выглядит как-то не очень, да и писать долго.

public class DatabaseMock implements DatabaseManager {

    private List<TableRecord> table = new ArrayList<TableRecord>() {{
        add(new TableRecord(1, "name", "description"));
    }};

    @Override
    public String getName(int id) {
        for (TableRecord tableRecord : table) {
            if (tableRecord.getId() == id) {
                return tableRecord.getName();
            }
        }
        return "Noname";
    }
}
  • Вопрос задан
  • 139 просмотров
Пригласить эксперта
Ответы на вопрос 3
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Удобней мокать через специальные инструменты. Например с помощью библиотеки mockito
Ответ написан
xez
@xez Куратор тега Java
TL Junior Roo
mockito -- довольно удобно делать заглушки. Но это, скорее, для юнит тестов.
или
testcontainers -- для полноценных интеграционных тестов. Нужно чтобы на машине стоял докер. Это не эмуляция БД - это поднимается настоящая БД в докере. После тестов оно само все умирает.
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
Лично я предпочитаю инструменты типа EmbeddedPostgres.

Дольше моков, безусловно, но зато это практически полный аналог работы в проде - БД поднялась, проинициализовалась данными, мы выполнили нужные нам действия (тот же insert или select любой сложности), умерла.

Ибо моки - это, конечно, хорошо, но как быть, если структуру базы мы уже поменяли, а тесты нет?
Код работает со старыми моками, все хорошо - а в реальной работе бац, и "все умерли"...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы