Создание Насмешек Базы данных в ASP.NET MVC использование Данных из Существующей Базы данных

У меня есть существующий ASP.NET приложение MVC с некоторыми демонстрационными данными в базе данных SQL Server, которая хорошо работает..

Принятие у меня есть все необходимые репозитории и МОК на месте, там инструмент, который будет извлекать данные из группы таблиц и "сушить сублимацией" их в фиктивный объект (возможно, использующий XML-файл, чтобы хранить данные), так, чтобы я мог отсоединить базу данных и использовать ложные данные для моих модульных тестов?

5
задан Robert Harvey 22 June 2010 в 16:09
поделиться

3 ответа

В зависимости от того, что именно вы пытаетесь протестировать могут быть разные подходы.

Если вы хотите протестировать логику доступа к данным, то это уже не модульный тест, а интеграционный тест. Для такого рода тестов неплохо иметь возможность легко заменить реальную базу данных какой-нибудь более легкой, возможно, даже базой данных в памяти, такой как SQLite, которая будет реконструирована перед запуском каждого теста. Если вы используете ORM, эта задача проста. Все, что вам нужно сделать, это сгенерировать сценарии SQL (INSERT INTO ...) из вашей существующей базы данных, изменить и адаптировать диалект к SQLite (при необходимости), прочитать и ввести в файл SQLite и, наконец, все, что осталось, это проинструктировать ваш уровень доступа к данным для использования диалекта SQLite и строки подключения для модульного теста.

Теперь, если вы не используете ORM и ваша логика доступа к данным привязана к MSSQL, все становится еще хуже, вам понадобится живая база данных для выполнения этих интеграционных тестов. В этом случае я бы посоветовал вам продублировать вашу реальную базу данных, которую вы будете использовать для тестов, изменив только строку подключения. Еще раз вам нужно будет правильно настроить и разобрать (желательно в транзакции) эту тестовую базу данных, чтобы привести ее в известное состояние для тестов.

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

3
ответ дан 14 December 2019 в 18:58
поделиться

Я не знаю прямого способа сделать то, что вы просите, но MSSQL поддерживает экспорт в CSV, Access и Excel. Хотя это требует, чтобы вы изменили уровень доступа к данным на вашем промежуточном уровне, и, более того, я не думаю, что это отвечает на ваш вопрос:

«заморозьте» его в фиктивный объект

Это я не уверен. Возможно ли просто восстановить резервную копию базы данных на том же сервере SQL, что и новая база данных, или, возможно, на сервере SQL для разработчиков?

0
ответ дан 14 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

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