запустить базу данных с помощью rspec-rails - PullRequest
0 голосов
/ 24 августа 2011

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

строка кода в контроллере выглядит примерно так:

@myallresources = Myrsources.all

где Myresources просто наследуется от ActiveRecord :: Base

, однако, поскольку нет базы данных, загружать нечего, а @myallresources - просто пустой массив, что приводит к сбою теста.Есть ли способ подключиться к базе данных при запуске rspec?

Я очень плохо знаком с RSpec и rails, поэтому любая помощь будет очень признательна.Благодаря.

1 Ответ

0 голосов
/ 24 августа 2011

Вы не должны использовать соединение с базой данных в спецификациях вашего контроллера.

Проверьте раздел об изоляции базы данных на этой странице http://rspec.info/rails/writing/controllers.html

В основном вам нужно смоделировать или заглушить ваши модели ActiveRecord, так как те должны быть проверены отдельно в спецификации моделей.Вот простой пример использования mock_model:

before do
  mocks = (1..3).map { mock_model(MyResource) }
  MyResource.should_receive(:all).and_return(mocks)
end

Поместите это в тот же блок, где находится тестирование определения describe для действий, которые используют MyResource.all.

Вы можете найти хорошее объяснениеиз насмешек и заглушек в следующих ссылках:

...