2016-07-27 2 views
-1

Учитывая У меня есть тест, какRSpec выполнить команду на провал

expect(['x', 'y', 'z']).to be_empty

Как я могу получить выполнить команду, когда тест не удается, например, поместить содержимое моего неудачного теста в файл CSV с именами строк, специфичными для данных в этом тесте.

Лучший способ, которым я могу думать, чтобы сделать это

begin 
    expect(['x', 'y', 'z']).to be_empty 
rescue RSpec::Expectations::ExpectationNotMetError => e 
    #output to csv 
    raise e 
end 

Однако это не чувствует, как чистейшей способ сделать это.

Другой вариант заключается в том, чтобы положить это на крючок отказа в огурце, однако я потерял бы способность указывать имена строк, или мне нужно будет определить имена строк заранее, что также кажется странным.

Есть ли какой-либо более чистый, более точный способ обойти это?

Примечание: Эти тесты бегутся с огурцами

ответ

1

Вы можете использовать after крюк, чтобы проверить пример состояния.

http://www.rubydoc.info/github/rspec/rspec-core/RSpec/Core/Example#exception-instance_method

after do |example| 
    if example.exception.nil? 
    # passed 
    else 
    # failed 
    end 
end 
+0

Хотя не совсем то, что я ищу, это, кажется, лучший способ сделать то, что я хочу, не отлов исключения –