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

Как сказать 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
4b9b3361

Ответ 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