Подтвердить что ты не робот

Должен ли я использовать "rake spec" или "rspec" (не может работать "rake spec" )?

Я на Rails 3.2, и я использую rspec (2.11.1). Когда я запускаю свой тестовый пакет с "rake spec" , я получаю сбои. Когда я запускаю его с помощью "rspec" , все проходит. Я видел другие упоминания об этой проблеме, но ничего окончательного, объясняющего, что происходит и какие лучшие практики.

Если я делаю "rake spec" или "rake tmp: clear && rake spec", мои тесты терпят неудачу.

Если я выполняю "rspec" или "rspec spec" или "rake db: test: prepare && rspec", мои тесты проходят.

Я думал, что единственное различие заключалось в том, что rake сделал "db: test: prepare", но если я сделаю это вручную перед запуском rspec, мои тесты пройдут так, что это не может быть вся история.

После небольшого чтения я изменил свой Gemfile. Раньше я настраивал его в соответствии с "Книгой RSpec" (p328), где описано, как установить gspec в блок "group: development:: test". Прочитав некоторые другие сообщения SO, я удалил ": development" и сделал связку. Теперь "rake spec" ничего не делает. "rspec" по-прежнему работает по-прежнему.

Смутно...

4b9b3361

Ответ 1

Попробуйте запустить RAILS_ENV=test rake spec

Ответ 2

Вот что исправил это для меня. Мне тоже удалось запустить rake spec RAILS_ENV=test У меня был такой Gemfile, как этот

group :developmet do
    gem 'rspec-rails','2.9.0'
...
end
group :test do
    gem 'rspec-rails','2.9.0'
...
end

Я изменил его на это, сделав блок для тестирования и разработки и поставив его перед состоянием разработки. Я также удостоверился, что мои миграции db все превратили его в тестовый db. db:migrate RAILS_ENV=test

group :development,:test do
    gem 'rspec-rails','2.9.0'
        ...
end
group :development do
     ...
end

Ответ 3

В соответствии с rspec-rails github поместите rspec-rails gem в группы разработки и тестирования Gemfile. Это связано с тем, что задача тестового грабли загружает среду разработки перед переключением в тестовую среду.

group :development, :test do
  gem 'rspec-rails'
end

Кроме того, если вы используете Gemfile, используйте "bundle exec rake spec" для запуска всех ваших спецификаций. Чтобы запустить одиночный файл спецификации, используйте команду "bundle exec rake rspec path/to/spec_file". Использование "bundle exec" гарантирует, что вы используете правильную команду rake, установленную через ваш Gemfile, а не команду системы rake.

Ссылка: https://github.com/rails/rails/issues/8591