Як я можу сказати Rails використовувати RSpec замість тестового блоку під час створення нового додатка Rails?


152

Я test-unitвстановив і rspecвстановив (поряд з -core, -expectations, -mocksі -railsверсії 2.6.x). Коли я запускаю команду rails new foo, вона використовує test-unitдля генерації файлів тестової заглушки замість rspec.

Чи є варіант, де я можу сказати рейкам використовувати rspec замість того, щоб генерувати тести?

Відповіді:


262

Слід працювати:

у командному рядку:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

в Gemfile:

gem 'rspec-rails'

у командному рядку:

bundle install
rails g rspec:install

Я думаю, що деякі з цих кроків вийшли з ладу, ні? Це схоже, що це спрацювало б, якщо це зробити в правильному порядку. Відредагуйте свою відповідь, і я позначу її як прийняту.
aarona

60
Вам не потрібен generator.rbініціалізатор, про це подбає залізниця RSpec. Все, що вам потрібно, знаходиться rspec-railsв тій developmentгрупі, Gemfileякої достатньо, щоб вимагати цього для генераторів. Вам також не потрібно генерувати додаток -T, ви можете видалити testdir, і воно буде працювати.
Райан Бігг

1
Чи можете ви редагувати код з g.test_framework =: rspec на g.test_framework: rspec
Deepak Lamichhane

8
@RyanBigg: з опцією -T, яку ми "rails/test_unit/railtie"прокоментували вapplication.rb
Джан Нгуен,

13
Коли ви додаєте rspec-railsдорогоцінний камінь, важливо поставити його на тестування та розробку, інакше генератори не використовуватимуть RSpec, навіть якщо виконувати вищезазначені дії.
лютийІнь

73

Створіть свою нову програму для рейок:

rails new <app_name> -T

Або видаліть testкаталог із наявної програми:

rm -rf test/

Зробіть запис у своєму Gemfile:

gem 'rspec-rails'

З командного рядка встановіть дорогоцінний камінь

$ bundle install

З командного рядка встановіть rspec у вашу програму:

$ rails g rspec:install

Тепер ваша програма-рейки використовує RSpec замість тестового блоку.


2
У цьому списку відсутній крок "встановлення пакета". Додано.
cczona

6

Коли ви створили свою рейкову програму за допомогою:

rails new <app_name> -T  # to exclude Test::Unit

Додайте дорогоцінний камінь RSpec у свій Gemfile таким чином:

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

У командному рядку напишіть:

bundle install  # this will install the missing gems

Тепер вам потрібно встановити RSpec, запустивши:

rails generate rspec:install

Це створить такі файли:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

Я настійно рекомендую прочитати всі коментарі spec_helper і rails_helper, щоб добре зрозуміти, що робить кожен варіант.

Після того, як все встановлено, ви можете запустити всі свої тести за допомогою:

bundle exec rspec

Детальніше про рекомендовані конфігурації spec_helper та rails_helper можна прочитати на https://kolosek.com/rails-rspec-setup .


4

Я новий розробник, і я просто створив прапор рейки (-rspec) для вирішення проблеми ОП. Він позбавляється від Test :: Unit і вставляє gig rails-rspec із скриптом bash. Сценарій можна модифікувати, щоб допомогти розробникам Linux, автоматично додаючи дорогоцінний камінь therubyracer або створити власні прапори та дорогоцінні набори. (можливо, спеціально переходьте до цього коштовного рядка та видаляєте коментар)

Ось суть && Я сподіваюся, що це допоможе комусь там. https://gist.github.com/MTen/8310116


0

Немає рідного способу зробити це з railsCLI. Створіть новий проект без test-unit:

rails new rails-app --skip-test

А потім дотримуйтесь rspecінструкцій, щоб інтегрувати його в нову програму Rails.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.