我正在写一个库(没有Ruby on Rails的),我想为它有非常详细的黄瓜功能。这尤其包括描述在各种情况下应该抛出的错误/异常。
例
最直观的方式来写黄瓜步骤可能会是这样的
When I do something unwanted
Then an "ArgumentError" should be thrown
问题
有两个问题,我必须解决:
- 当引发异常时,第一步不应该失败。
- 第一步引发的异常应该可以通过第二步访问,以便执行某些断言魔术。
Unelegant和繁琐的解决方案
我已经能够拿出的缓存例外的第一步,把它变成一个实例变量,第二步骤后才能访问的最佳方法,像这样:
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
然而,这使得第一步或多或少没用的情况下,我不希望它失败,它需要一个实例变量,这是从来没有一件好事。
那么,任何人都可以帮助我至少减少繁琐的解决方案吗?还是应该以不同的方式写我的功能?任何帮助将非常感激。
现在,这个问题写得很好!肯定值得一个好的答案(对不起,我不能拿出一个):) :) – user562529 2012-03-08 02:24:11
非常感谢@ user562529。不幸的是我有这样的感觉,实际上这个问题实际上并没有简单的解决方案,所以我可能只是打开一个黄瓜问题,并希望他们实施一些实用的东西。 – JLimperg 2012-03-08 21:43:29