Ruby on Rails: переключение с test_unit на rspec - PullRequest
67 голосов
/ 27 марта 2012

Я прохожу учебник, в котором предлагается использовать rspec, но я уже прошел много установок по умолчанию для rails.Я действительно не хочу переделывать установку вообще.В любом случае, когда я запускаю

$ rails g integration_test named

, я получаю

  invoke  test_unit
  create    test/integration/named_test.rb

Когда я запускаю bundle, в списке появляются различные драгоценные камни rspec, но test_unit нет.Похоже, что в этом руководстве рельсы вызывают rspec вместо test_unit, не делая ничего дополнительного.Как заставить рельсы использовать rspec с командой генератора тестов интеграции?

Ответы [ 9 ]

99 голосов
/ 27 марта 2012

В вашем config/application.rb файле:

config.generators do |g|
  g.test_framework :rspec
end

Теперь, когда вы запускаете ваши генераторы (пример rails generate scaffold post), вы получаете тестовые файлы rspec. Не забудьте перезапустить ваш сервер. Для получения дополнительной информации о генераторах см .:

RailsCasts # 216 Генераторы в Rails 3

Если вы действительно хотите использовать генераторgration_test, вам нужно специально изменить команду:

rails g integration_test named --integration-tool=rspec
68 голосов
/ 02 ноября 2012

Работая с Rails 3.2.8 и rspec-rails 2.11.4 , я обнаружил, что моя проблема была в моем Gemfile. У меня было rspec-rails в группе :test, но не в группе :development. Поскольку Rails по умолчанию работает в режиме разработки (в том числе, когда вы запускаете команду generate), rspec-rails должен быть в вашей группе :development, чтобы он мог подключиться к генераторам. Как только я это установил, все работало нормально.

28 голосов
/ 15 апреля 2013

Начиная с Rails 3.2.12, выполните следующие действия в следующем порядке:

rails new app_name --skip-test-unit

Добавьте rspec-rails в ваш Gemfile в группе разработки,

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

Выполните bundle install

Запустите генератор

rails generate rspec:install

... и очистите существующий тестовый каталог:

rm -Rf $RAILS_ROOT/test    
8 голосов
/ 19 июля 2012

Наткнулся сегодня на эту проблему. application.rb должен быть обновлен:

config.generators do |g|
  g.test_framework :rspec
  g.integration_tool :rspec
end
8 голосов
/ 28 марта 2012

Чтобы использовать RSpec вместо стандартного Test :: Unit, сначала выполните следующую команду

$ rails generate rspec:install

Эта команда создаст следующую папку / файлы

create  .rspec
create  spec
create  spec/spec_helper.rb

Теперь, когда вы использовали генератор для генерации компонентов рельсов, таких как контроллер, модель и т. Д., Он будет создавать соответствующие RSpec.

2 голосов
/ 23 августа 2014

1.когда создаете новое приложение rails, пропустите каркас TestUnit, или он сгенерирует каталог test_unit.

$rails new your_app --skip-test-unit

2.добавьте следующий код в файл your_app / config / application.rb:

config.generators do |g| g.test_framework :rspec end

3.добавьте следующий код в Gemfile вашего_app:

group :test, :development do gem 'rspec-rails' end сохраните его и запустите bundle install для установки rspec gem

4.Инициализируйте спецификацию / каталог

rails generate rspec:install

подробнее, пожалуйста, обратитесь: https://github.com/rspec/rspec-rails

2 голосов
/ 18 июля 2013

В конфиге / приложении добавьте этот код

 config.generators do |g|
       g.test_framework  :rspec
       g.integration_tool :rspec
 end
1 голос
/ 05 февраля 2014
$ rails g model Account
      invoke  active_record
      create    db/migrate/20140205052617_create_accounts.rb
      create    app/models/account.rb
      invoke    test_unit
      create      test/models/account_test.rb
      create      test/fixtures/accounts.yml
$ rails d model Account

Запуск script / rails Генерирует rspec: установка не добавляет rspec в качестве структуры по умолчанию. Добавил ниже команду в config / application.rb и тогда она работает

config.generators do |g|
  g.test_framework :rspec
end
$ rails g model Account
      invoke  active_record
      create    db/migrate/20140205052957_create_accounts.rb
      create    app/models/account.rb
      invoke    rspec
      create      spec/models/account_spec.rb
$ rails -v
Rails 4.0.2
1 голос
/ 19 декабря 2012

Я обнаружил, что я сделал, что некоторые другие методы работают до сих пор, - это проверка моего правописания .... У меня было то, что у @tovodeverett было при группировке rspec-rails с: development и: test, но неправильно написало развитие.Это исправило мою проблему, но я генерировал тесты с test_unit вместо rspec.

...