Как вы запускаете один файл тестов/спецификаций в RSpec?

Я хочу иметь возможность запускать одиночные тесты файла spec — например, для одного файла, который я редактирую. rake spec выполняет все спецификации. Мой проект не является проектом Rails, поэтому rake spec:doc не работает.

Не знаю, имеет ли это значение, но вот моя структура каталогов.

./Rakefile
./lib
./lib/cushion.rb
./lib/cushion
./lib/cushion/doc.rb
./lib/cushion/db.rb
./spec
./spec/spec.opts
./spec/spec_helper.rb
./spec/db_spec.rb

Ответ 1

Или вы можете пропустить грабли и использовать команду rspec:

rspec path/to/spec/file.rb

В вашем случае я думаю, что если ваш файл. /spec/db _spec.rb содержит соответствующие помощники, он должен работать нормально.

Если вы используете старую версию rspec, это:

spec path/to/spec/file.rb

Ответ 2

Необработанный вызов:

rake spec SPEC=spec/controllers/sessions_controller_spec.rb \
          SPEC_OPTS="-e \"should log in with cookie\""

Теперь выясните, как вставить это в свой редактор.

Ответ 3

Этот вопрос является старым, но он отображается вверху Google при поиске того, как запускать один тест. Я не знаю, было ли это недавнее дополнение, но для запуска одного теста из спецификации вы можете сделать следующее:

rspec path/to/spec:<line number>

где -line number - номер строки, которая содержит часть вашего теста. Например, если у вас есть такая спецификация, как:

1: 
2: it "should be awesome" do
3:   foo = 3
4:   foo.should eq(3)
5: end
6:

Скажем, это сохранилось в spec/models/foo_spec.rb. Затем вы будете запускать:

rspec spec/models/foo_spec.rb:2

и он просто запустит эту спецификацию. Фактически, это число может быть от 2 до 5.

Надеюсь, это поможет!

Ответ 4

Вы также можете использовать фактический текст тестового примера * e * xample с помощью -e!

Итак, для:

it "shows the plane arrival time"

вы можете использовать

rspec path/to/spec/file.rb -e 'shows the plane arrival time'
./scripts/spec path/to/spec/file.rb -e 'shows the plane arrival time'

нет необходимости грабли здесь.

Ответ 5

из справки (spec -h):

-l, --line LINE_NUMBER           Execute example group or example at given line.
                                 (does not work for dynamically generated examples)

Пример: spec spec/runner_spec.rb -l 162

Ответ 6

Если вы установили rspec в качестве плагина, а не как драгоценный камень, тогда у вас не будет исполняемого файла spec.

Во всяком случае, все, что вам нужно сделать, это запустить файл с помощью ruby. Код rspec достаточно умен, чтобы выполнить тесты для вас.

например:

ruby myclass_spec.rb

Ответ 7

http://github.com/grosser/single_test позволяет делать что-то вроде..

rake spec:user          #run spec/model/user_spec.rb (searches for user*_spec.rb)
rake test:users_c       #run test/functional/users_controller_test.rb
rake spec:user:token    #run the first spec in user_spec.rb that matches /token/
rake test:user:token    #run all tests in user_test.rb that match /token/
rake test:last
rake spec:last

Ответ 8

Ruby 1.9.2 и Rails 3 имеют простой способ запуска одного файла спецификации:

  ruby -I spec spec/models/user_spec.rb

Пояснение:

  • Команда
  • ruby имеет тенденцию быть быстрее, чем команда rake
  • -I spec означает "включить каталог" spec "при поиске файлов"
  • spec/models/user_spec.rb - это файл, который мы хотим запустить.

Ответ 9

У меня возникли проблемы с работой любого из этих примеров, возможно, потому что сообщение устарело и команды изменились?

После того, как я проговорил, я нашел, что это работает:

rspec spec/models/user_spec.rb

Это будет запускать только один файл и обеспечивает полезный вывод в терминале.

Ответ 10

specky.vim

Ответ 11

Кроме того, посмотрите на автотест.

Запуск автотеста в командном окне будет означать, что файл спецификации будет выполняться всякий раз, когда вы его сохраните. Кроме того, он будет запускаться всякий раз, когда запускается файл, который вы указываете.

Например, если у вас есть файл спецификации модели с именем person_spec.rb и файл модели, который он специфицирует по имени person.rb, тогда всякий раз, когда вы сохраняете любой из этих файлов из вашего редактора, будет запущен spec файл.

Ответ 12

Допустим, вы используете тест для создания todo. Вы всегда можете запустить этот конкретный код спецификации todo, используя файл crete_spec.rb, как показано ниже.

      rspec/spec/features/controller/spec_file_name.rb

   Example:

   Creating  rspec spec/features/todos/create_spec.rb
   Editing   rspec spec/features/todos/edit_spec.rb
   Deleting  rspec spec/features/todos/destroy_spec.rb

Если вы хотите запустить все спецификации за один короткий.

   rspec 

Если вы хотите запустить все спецификации в конкретном пользователе контроллера, это.

  rspec/spec/feaures/controller_name

  Example:   rspec/spec/features/todos

Надеюсь, это даст вам больше понимания!

Ответ 13

Чтобы запустить все ваши файлы rspec: rspec

Примечание: вы должны быть в корне вашего проекта

Чтобы запустить один файл rspec: rspec 'path_to/spec.rb'

Примечание: замените путь 'path_to/spec.rb' на свой путь. Котировочные знаки необязательны.

Чтобы запустить один rspec test из одного файла: rspec 'path_to/spec.rb:7'

note:: 7 - номер строки, в которой начинается тест

Ответ 14

Хотя к этому вопросу было написано много замечательных ответов, ни один из них не использует Rspec tags.

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

Например, я добавляю тег "dev" со значением "current":

it "creates an user", dev: :current do
  user = create(:user)
  expect(user.persisted?).to be_truthy
end

тогда я запускаю

bundle exec rspec . --tag dev:current

Различные теги/значения могут быть установлены в отдельных спецификациях или группах.