Тестирование Rails с доступом к базе данных вне процесса? - PullRequest
2 голосов
/ 13 января 2009

Я создаю приложение Rails, которое требует, чтобы некоторые модели взаимодействовали с некоторыми необходимыми библиотеками Java. Для этого я хочу использовать Rails на MRI, а не на JRuby или RBJ. Код Java требует только доступа на чтение таблиц базы данных, управляемых приложением Rails.

Один из способов сделать это - настроить сервлет, который читает таблицы базы данных приложения Rails.

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

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

Как я могу использовать RSpec для тестирования моделей Rails, которые зависят от внешних процессов, имеющих доступ к таблицам, управляемым Rails?

1 Ответ

2 голосов
/ 13 января 2009

Отключите фиксации транзакций, и записи в базу данных должны стать видимыми для внешних процессов. В тестовом классе, который вы хотите сделать с помощью put:

self.use_transactional_fixtures = false

Или введите test/test_helper.rb, если вы хотите, чтобы это относилось ко всему. Обратите внимание, что ваши тесты могут выполняться медленнее, потому что на самом деле все попадает в базу данных.

...