Тестирование Rspec по данным из внешней базы данных - PullRequest
0 голосов
/ 05 января 2012

В настоящее время я создаю тестовые сценарии rspec для приложения Rails 2.3.Проблема, с которой я сталкиваюсь, заключается в том, что приложение зависит от данных из внешней базы данных, например:

  • Main_User - внешнее приложение.

  • Node_User - приложение, которое я тестирую.

Когда создается новый Node_User, Node_User вызывает Main_User, который создает пользователя и возвращает с некоторыми данными, которые Node_User использует для создания Node_User.Я могу запросить базу данных Main_User, чтобы убедиться, что созданная там запись содержит данные, которые передаются Node_User?Или есть лучший способ проверить это?

Спасибо!

1 Ответ

1 голос
/ 05 января 2012

Да, теоретически вы можете запросить удаленную базу данных, если у вас есть доступ к пользователю / паролю / имени хоста для этой базы данных. (Искать «Rails несколько баз данных».)

Но я бы не рекомендовал такой подход. Ваши тесты будут изменять состояние удаленной базы данных. Это кажется мне небезопасным. Вы будете создавать фиктивные записи - и, возможно, удалять или искажать данные, если ваши тесты массово удаляют или используют нарушенную функциональность. Другими словами, ваши тесты могут плохо работать с производственной базой данных.

Поэтому я бы порекомендовал издеваться над удаленной базой данных. Один из вариантов будет VCR . Это действительно круто, но это потребует от вас работы с удаленной базой данных хотя бы один раз, потому что она должна записывать первый запуск. Другой вариант - использовать один из инструментов, лежащих в основе видеомагнитофона, например FakeWeb.

Конечно, это только проверяет сторону Node_User. Вы сказали, что вам также необходимо проверить правильность удаленной записи. Для этого я бы рекомендовал писать тесты на стороне Main_User. Такие тесты имитируют входящий RESTful-запрос от Node_User и проверяют правильный результат.

Это работает, только если Main_User - ваше приложение. Если это сторонняя служба, то, возможно, не существует безопасного способа проверить ее. Возможно, вам просто нужно поверить в его правильность.

...