我正在寫一個庫(沒有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