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

Как запустить один тест в режиме охраны для rspec?

Я использую guard-rspec для автоматического запуска необходимых тестов rspec по мере изменения моих файлов, и мне нравится, как это работает. Однако, когда я отлаживаю файл с несколькими тестами, иногда я просто хочу, чтобы отдельный тест снова запускался. Например, с rspec из командной строки:

rspec spec/requests/my_favorite_spec.rb:100

В строке my_favorite_spec.rb будет выполняться только одиночная спецификация в строке 100.

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

4b9b3361

Ответ 1

Вам нужно аргументировать ваш файл spec/spec_helper.rb, чтобы принять оператор :focus => true.

RSpec.configure do |config|
  config.filter_run :focus => true
end

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

it 'does something', :focus => true do
  //your spec
end

или

describe "something", :focus => true do
  before do
     sign in
     visit page
  end

  it { does something }
  it { does something else }
end

Если вы собираетесь воспользоваться этим подходом, вы, вероятно, также захотите убедиться, что все спецификации запущены, если нет :focus => true где угодно, используя документированный подход:

RSpec.configure do |config|
  config.run_all_when_everything_filtered = true
end

Вы можете много сделать с фильтрами; вы можете посмотреть эту страницу: https://relishapp.com/rspec/rspec-core/v/3-0/docs/filtering

Ответ 2

Я думаю, вы можете добавить опцию "focus: true" для спецификации, которую вы хотите запустить, что-то вроде

it 'does something', focus: true do
  //your spec
end

тогда вы сохраняете файл, а защита запускает только те сфокусированные тесты

когда вы закончите, вы просто удалите "focus: true"