Есть ли способ заставить RSpec провалиться, если нет подтверждения? - PullRequest
0 голосов
/ 11 сентября 2018

Минитест имеет proveit!

Имеет ли RSpec аналогичный способ требовать утверждений?

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

Это мой дубль:

RSpec.configure do |config|
  config.include(Module.new do
                   attr_writer :expectation_set_count

                   def expectation_set_count
                     @expectation_set_count ||= 0
                   end

                   def expect(*)
                     self.expectation_set_count += 1

                     super
                   end
                 end)

  config.after do
    expect(expectation_set_count).to be > 0
  end
end
0 голосов
/ 12 сентября 2018

Вы можете настроить RSpec для этого, проверьте это:

https://github.com/rspec/rspec-core/issues/404#issuecomment-11431199 и http://blog.sorah.jp/2012/12/17/rspec-warn-for-no-expectations

Как правило, вам нужно настроить after ловушку и проверить метаданные, если ожидался запуск: (копия кода в случае, если URL-адрес не работает)

RSpec.configure do |config|
  config.after(:each) do
    result = self.example.metadata[:execution_result]
    has_mock_expectations = RSpec::Mocks.space.instance_eval{receivers}.empty?
    if !result[:exception] && !result[:pending_message] && !RSpec::Matchers.last_should && hasnt_mock_expectations
      $stderr.puts "[WARN] No expectations found in example at #{self.example.location}: Maybe you forgot to write `should` in the example?"
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...