ruby – 断定在黄瓜中抛出一个特殊的异常
脚本
我正在写一个图书馆(没有Ruby on Rails),我想要有非常详细的黄瓜功能.这特别包括描述在各种情况下应该抛出的错误/异常. 例 编写黄瓜步骤最直观的方式可能就是这样 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 但是,这样做在第一步或多或少无用于我不希望失败的情况,而且需要一个实例变量,这绝对不是一件好事. 所以,任何人都可以帮我一个至少不那么麻烦的解决方案?或者我应该不同地写我的功能吗?任何帮助将不胜感激. 解决方法
我再想一次,也许答案是:
没有优雅的解决方案,因为您的案件违反了Given-When-Then计划. 但是当你想到的时候,这不是真的!这个例外并不是这个动作的结果,实际上这个例外只是表示“When”-Statement failed. 我的解决办法是在较高层次上进行测试: When I do something unwanted Then an error should be logged 要么 When I do something unwanted Then the user should get an error message 要么 When I do something unwanted Then the program should be locked in state "error" 或这些的组合. 那么你会在你的程序中“缓存异常” – 这是完全有道理的,因为你最有可能需要这么做. 你所说的两个问题也会解决. 如果您真的必须测试异常 那么我猜,那黄瓜不是正确的测试套件,嗯? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |