Как запустить интеграционные тесты Rails без удаления содержимого БД? - PullRequest
11 голосов
/ 12 января 2009

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

Когда я запускаю интеграционные тесты, он сбрасывает загруженную базу данных и загружает тестовые данные (как и ожидалось). Как я могу изменить это поведение и сохранить копию загруженной производственной БД?

Ответы [ 4 ]

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

Интеграционные тесты вызывают db: test: prepare, которая вызывает db: test: clone_structure, которая вызывает db: structure: dump и db: test: purge

Вы можете написать собственное задание

namespace :your_namespace do
  Rake::TestTask.new(:integration => "db:migrate(if you want") do |t|
    t.libs << "test"
    t.pattern = 'test/integration/**/*_test.rb'
    t.verbose = true
  end
end
1 голос
/ 28 августа 2009

Чтобы заставить это работать, мне нужно было указать среду при вызове задачи rake, иначе она запустит миграцию на базе разработки, а затем запустит тесты на тестовой базе данных; Приведенный выше пример

namespace :dbtest do
  Rake::TestTask.new(:integration => "db:migrate") do |t|
    ...

Я должен был выполнить тесты примерно так

rake environment RAILS_ENV=test dbtest:integration
0 голосов
/ 13 января 2009

Мне нужно было добавить задачу Айвараза Rake

namespace :dbtest do  
  Rake::TestTask.new(:integration) do |t|
    t.libs << "test"
    t.pattern = 'test/integration/**/*_test.rb'
    t.verbose = true  
  end
end

, а также удалить

fixtures :all

строка из файла test / test_helper.rb (или создайте новую, на которую вы ссылаетесь в файлах интеграционных тестов)

0 голосов
/ 12 января 2009

Установка self.use_transactional_fixtures = true в ваших интеграционных тестах также будет полезна, если вы не хотите перезагружать рабочую копию между каждым выполнением теста.

В противном случае при выполнении интеграционного теста данные будут подвергнуты изменениям, которые они внесут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...