Как запустить один тест в режиме охраны для rspec?
Я использую guard-rspec для автоматического запуска необходимых тестов rspec по мере изменения моих файлов, и мне нравится, как это работает. Однако, когда я отлаживаю файл с несколькими тестами, иногда я просто хочу, чтобы отдельный тест снова запускался. Например, с rspec из командной строки:
rspec spec/requests/my_favorite_spec.rb:100
В строке my_favorite_spec.rb
будет выполняться только одиночная спецификация в строке 100.
Я попытался ввести выше в защитную консоль, но он просто запускал все тесты, как будто я только что нажал кнопку ввода. Есть ли другой синтаксис в консоли защиты для запуска единой спецификации?
Ответы
Ответ 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"
Ответ 3
Вы можете использовать failed_mode: :focus
в вашем файле Guard, как описано здесь: https://github.com/guard/guard-rspec#list-of-available-options