Ответ 1
fongo может быть тем, что вы ищете.
Мне нужно разработать некоторые тесты Junit для Java-кода, используя магазин MongoDB. Есть ли какая-либо инфраструктура/библиотека, которая позволяет мне инициализировать mock-сервер MongoDB в памяти?
(Идея состоит в том, чтобы протестировать только сам код, то есть на любой машине независимо, если MongoDB установлен и запущен).
Спасибо заранее!
fongo может быть тем, что вы ищете.
Мы действительно работаем над такой тестовой системой, и это вполне возможно. В нашем подходе наша тестовая среда расширяет стандартный класс тестов (JUnit в нашем случае, но TestNG кажется более способным), который устанавливает и срывает различные зависимости базы данных с каждым тестом, используя следующие шаги:
Настройка тестового набора
1) Запустите процесс mongod (мы используем ProcessBuilder, сохраняем экземпляр процесса)
Настройка теста:
2) Запустите mongo с конкретным тестовым файлом .js для создания начального состояния данных
Тест
3) Тест на запуск
Тремя опроса
4) База данных Drop
Срыв тестового набора
5) Остановить процесс mongod (process.destroy())
Поскольку запуск и остановка mongod - единственная трудоёмкая вещь, я бы настоятельно предложил сделать это как можно меньше. Предпочтительно один раз для всего набора тестов. Наши материалы еще не закончены, но ранние результаты положительные. Я не думаю, что есть много альтернатив. В момент написания файла нет библиотеки mongo mock, и mongod не имеет встроенного режима.
Я написал реализацию заглушки MongoDB в Java: mongo-java-server (см. этот ответ).
Не совсем, вы должны сами делать это в своих слоях приложений. Если вы используете Morphia, вы можете использовать любую фальшивую структуру с вашими уровнями обслуживания, которые вам нравятся (поскольку объекты являются только POJO), но на уровне db/driver нет ничего, чтобы помочь вам.
Многие люди просто используют локального разработчика. экземпляр mongodb с набором тестовых данных, так как он работает так быстро. Я знаю людей, которые загружают тестовые данные для каждого теста, например, копируя базу данных с поддельными/тестовыми данными.
Как часть настройки тестового адаптера, отбросьте базу данных и заполните ее любыми стандартными тестовыми данными.