2009-10-10 52 views
1

我有一個負面的情況下用黃瓜進行測試。具體來說,我想確保當某人發佈帶有無效句柄的網址時,該網站會返回錯誤。如何在Rails中使用Cucumber的消極場景?

我的情況是這樣的:

Scenario: create person with too short a handle When person named "Fred" with handle "tooshort" updates Then I should get a 500 error

我一步看起來像

When /^person named "(.)" with handle "(.)" updates$/ do |name, handle| visit "/mobile/update?handle=#{udid}&name=#{name}"

當我運行的情況下,它永遠不會給當時的一部分,因爲從當

錯誤​​3210

這是正確的,當應該打開一個500錯誤。

我只是不知道如何將短語當作否定測試。也許我應該使用與某個不同的東西?

+0

這並沒有解決問題,但你不應該返回50 0錯誤在這裏。 5xx表示「服務器未能履行明顯有效的請求」。如果句柄太短,那麼這不是一個有效的請求。 – 2011-07-30 12:16:20

回答

1

如果你的你當個步驟是提高一個錯誤,你的情況下使用lambda塊捕捉此RuntimeError正確的行爲:

When /^person named "(.)" with handle "(.)" updates$/ do |name, handle| 
    lambda { 
    visit "/mobile/update?handle=#{udid}&name=#{name}" 
    }.should raise_error("No Handle") 
end 

你可能有,因爲我不扭捏raise_error部分確切地知道錯誤的,你提出

類型以及你可以有一個步驟。然後像這樣的(起點)

Then /^the save should not be successful$/ do 
    response.should be_nil 
end 
+0

我可以看到如何使用這種方法;但是,我必須爲負面情況寫特別的時間。沒關係。我一直希望得到像「除了當」之類的東西,這樣我就不會有特殊的情況。 – RAVolt 2009-10-11 23:57:45

+0

事實上,這是我在過去的一個項目中所做的,我也不完全滿意。但我沒有看到任何其他方式來做到這一點。 如果你想要一些更清潔的東西,也許你不會引發錯誤,但是爲你的動作響應設置了一個「錯誤」狀態代碼並帶有適當的錯誤信息。 ex: wants.json {render:json => @ user.errors,:status =>:unprocessable_entity} – 2009-10-12 07:03:24

相關問題