Обнаружить сбой теста Rspec после каждого метода - PullRequest
19 голосов
/ 11 августа 2011

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

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

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

Ответы [ 3 ]

19 голосов
/ 02 октября 2014

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

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

after(:each) do |example|
  if example.exception
    # ...
  end
end
12 голосов
/ 11 июня 2012

EDIT: этот ответ действителен только для RSpec 2. Для RSpec 3 см. Ответ geekazoid.

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

after(:each) do
  if example.exception != nil
    # Failure only code goes here
  end
end
1 голос
/ 28 ноября 2017

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

after(:all) do |example_group|
  all_groups = example_group.class.descendants
  failed_examples = all_groups.map(&:examples).flatten.select(&:exception)

  if failed_examples.empty?
    # runs only if there are no failures
    do('something')
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...