Как сказать rspec работать без вывода ожидающих тестов?
Есть ли способ (может быть, какой-то ключ) сказать rspec пропустить ожидающие проверки и не печатать информацию о них?
У меня есть некоторые автоматически сгенерированные тесты, например
pending "add some examples to (or delete) #{__FILE__}"
Я запускаю "bundle exec rspec spec/models --format documentation" и получаю что-то вроде этого:
Rating
allows to rate first time
disallow to rate book twice
Customer
add some examples to (or delete) /home/richelieu/Code/first_model/spec/models/customer_spec.rb (PENDING: No reason given)
Category
add some examples to (or delete) /home/richelieu/Code/first_model/spec/models/category_spec.rb (PENDING: No reason given)
......
Я хочу сохранить эти файлы, потому что я собираюсь изменить их позже, но на данный момент я хочу, чтобы вывод выглядел так:
Rating
allows to rate first time
disallow to rate book twice
Finished in 0.14011 seconds
10 examples, 0 failures, 8 pending
Ответы
Ответ 1
Взгляните на теги -
Вы можете сделать что-то подобное в тестовом файле
describe "the test I'm skipping for now" do
it "slow example", :skip => true do
#test here
end
end
и выполните ваши тесты следующим образом:
bundle exec rspec spec/models --format documentation --tag ~skip
где символ ~
исключает все тесты со следующим тегом, в этом случае skip
Ответ 2
Для потомков: вы можете отключить вывод ожидающих тестов в основном выпуске документации путем создания пользовательского форматирования.
(для RSpec 3). Я сделал файл house_formatter.rb в моем каталоге спецификаций следующим образом:
class HouseFormatter < RSpec::Core::Formatters::DocumentationFormatter
RSpec::Core::Formatters.register self, :example_pending
def example_pending(notification); end
end
Затем я добавил следующую строку в файл .rspec:
--require spec/house_formatter
Теперь я могу вызвать форматтер с rspec --format HouseFormatter <file>
.
Обратите внимание, что я все еще получаю раздел "ожидающие проверки" в конце. Но, насколько я понимаю, это прекрасно.
Ответ 3
Это официальное "исправление", отправленное для этой проблемы в Github в ответ на issue Марко поднял, и поэтому он заслуживает отдельного ответа.
Это, вероятно, лучший ответ; моя довольно хрупкая. Для этого нужно перейти на Myron Marston в команде Rspec.
Вы можете реализовать это для себя довольно легко:
module FormatterOverrides
def example_pending(_)
end
def dump_pending(_)
end
end
RSpec::Core::Formatters::DocumentationFormatter.prepend FormatterOverrides
Или если вы хотите только отключить примеры без блоков:
module FormatterOverrides
def example_pending(notification)
super if notification.example.metadata[:block]
end
def dump_pending(_)
end
end
RSpec::Core::Formatters::DocumentationFormatter.prepend FormatterOverrides
Или, если вы просто хотите отфильтровать исключенные без блоков примеры (но все еще показывают другие ожидающие примеры):
RSpec.configure do |c|
c.filter_run_excluding :block => nil
end