Сценарий
Я пишу библиотеку (без Ruby on Rails), для которой я хотел бы иметь очень подробные возможности Cucumber. Особенно это касается описания ошибок/исключений, которые должны возникать в различных случаях.
Пример
Наиболее интуитивный способ написать шаги в Cucumber, вероятно, был бы чем-то вроде
When I do something unwanted
Then an "ArgumentError" should be thrown
Проблема
Есть две проблемы, которые я должен решить:
Неэлегантное и громоздкое решение
Лучший подход, который я смог придумать, это кэширование исключения на первом шаге и помещение его в переменную экземпляра, к которой может получить доступ второй шаг, примерно так:
When /^I do something unwanted$/ do
begin
throw_an_exception!
rescue => @error
end
end
Then /^an "(.*)" should be thrown$/ do |error|
@error.class.to_s.should == error
end
Однако это делает первый шаг более или менее бесполезным в случаях, когда я не хочу, чтобы он провалился, и требует переменной экземпляра, что никогда не бывает хорошо.
Итак, может ли кто-нибудь помочь мне с хотя бы менее громоздким решением? Или я должен написать свои функции по-другому? Любая помощь будет очень признательна.