Обнаружить сбой теста Rspec после каждого метода

Я пытаюсь запустить тест RSpec и хочу определить, не прошел ли тест в after метод. У меня сейчас есть что-то вроде этого:

after(:each) do
  cc = ConnectController.new()
  cc.update(<TEST-SERVER-CONTROLLER>, <TC-RESULT-ID>, result?)    
end

Как видите, result? Функция - это то, что мне нужно заменить, чтобы определить, провалился ли тест или нет, а также получить информацию о том, что тест провалился.

3 ответа

В дополнение к ответу Даниэля, в Rspec3 был удален пример метода (см. Здесь для получения дополнительной информации).

Вам нужно будет сделать что-то вроде этого:

after(:each) do |example|
  if example.exception
    # ...
  end
end

РЕДАКТИРОВАТЬ: этот ответ действителен только для RSpec 2. Для RSpec 3 см. Ответ geekazoid.

После каждого блока выполняется в контексте класса, который предоставляет example и вы можете обнаружить сбои, проверив exception метод на example Таким образом:

after(:each) do
  if example.exception != nil
    # Failure only code goes here
  end
end

Я искал, как проверить, если успех для всех примеров в группе в after(:context) / after(:all) блок. Вот что я придумал:

after(:all) do |example_group|
  if example_group.class.examples.select { |ex| ex.exception }.empty?
    # runs only if there are no failures
    do('something')
  end
end
Другие вопросы по тегам