Модульные тесты Rails без настройки или демонтажа БД?

#ruby-on-rails #unit-testing #tdd #abstract-class #readonly

#ruby-on-rails #модульное тестирование #tdd #абстрактный класс #только для чтения

Вопрос:

Я хочу написать несколько модульных тестов, которые не вносят никаких изменений в базу данных.

У меня есть приложение Rails 2.3.11. Это приложение имеет базу данных SQLite в качестве основной базы данных. Во многих отношениях это обычное приложение Rails.

Уникальность этого приложения в том, что оно также устанавливает соединение с базой данных SQL Server. У меня есть несколько моделей, которые являются абстрактными классами, и они используют базу данных SQL Server. У меня есть before_save и before_destroy обратные вызовы, чтобы предотвратить внесение каких-либо изменений в базу данных SQL Server. Кроме того, учетные данные пользователя для подключения к SQL Server должны быть доступны только для чтения.

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

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

Спасибо!

Комментарии:

1. Кстати, я хотел бы использовать в тестовой среде то же подключение к базе данных SQL Server, что и в среде разработки.

Ответ №1:

Настройка / удаление влияет только на базу данных приложения (похоже, SQLite), а не на дополнительные внешние подключения к базе данных.

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

Комментарии:

1. Так что мне не о чем беспокоиться, верно? И есть 2 экземпляра базы данных SQL Server: production и development. 3-го экземпляра базы данных SQL Server для тестирования не существует. Я хочу использовать базу данных SQL Server для разработки в тестовой среде.

2. Если эта база данных SQLServer полностью находится за пределами вашего приложения, тогда все должно быть в порядке. Если вас это беспокоит (или, может быть, есть что-то важное, что вы не учли в своем вопросе), вам следует создать тестовую БД, которая не может быть повреждена. Например, многие из наших производственных приложений используют свои собственные приложения PostgreSQL DB, но также полагаются на Oracle DB, которая обрабатывает аутентификацию пользователей, которая технически не является частью приложения Rails. Вместо того, чтобы наша среда тестирования / разработки касалась рабочей Oracle DB, у нас запущена тестовая версия Oracle DB, чтобы случайно не прервать производство.

3. спасибо за совет. Я посмотрю, создаст ли команда сервера еще один экземпляр SQL Server db только для набора тестов.