2010-06-22 3 views
4

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

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

ответ

2

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

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

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

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

0

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

«заморозить сухой» его в макете объекта

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