Моя база данных по выбору - MongoDB. Я пишу API уровня данных для абстрактной детали реализации из клиентских приложений, то есть я по существу предоставляет единый открытый интерфейс (объект, который действует как IDL).
Я тестирую свою логику, когда я вхожу в TDD. Перед каждым unit test вызывается метод @Before
для создания одноэлементной базы данных, после чего, когда тест завершается, вызывается метод @After
для удаления базы данных. Это помогает повысить независимость от единичных тестов.
Почти во всех модульных тестах, то есть при выполнении контекстного запроса, требуется какая-то логика вставки, которая должна произойти перед рукой. Мой открытый интерфейс предоставляет метод вставки - однако представляется неправильным использовать этот метод в качестве логики предшественника для каждого unit test.
На самом деле мне нужен какой-то насмешливый механизм, но у меня не было много опыта в насмешливых фреймворках, и кажется, что Google не возвращает ничего из насмешливого фрейма, который можно использовать с MongoDB.
Что делают другие в этих ситуациях? То есть, как люди unit test код, который взаимодействует с базой данных?
Кроме того, мой открытый интерфейс подключается к базе данных, определенной во внешнем файле конфигурации - кажется неправильным использовать это соединение для моего модульного тестирования - опять-таки ситуация, которая выиграет от какого-то насмешки?