我們想測試我們對黃瓜的步驟定義。我們希望能夠檢查的一件事是,我們預計失敗的測試實際上會失敗。爲此,我們希望編寫我們知道會失敗的場景,並將它們添加到我們的測試套件中,但標記或以其他方式表示它們,以便當且僅當它們失敗時才「通過」。如何解決這個問題?如何期待黃瓜失敗的步驟和傳遞失敗?
5
A
回答
0
您應該測試否定狀態。一個失敗的步驟只是一個傳遞步驟的逆轉。所以做類似的事情:
Then /i should not be true/ do
some_value.should_not be_true
end
這就是我將如何去測試失敗。您還可以趕上異常和等,並驗證塊事實上確實拋出該異常
lambda do
something_that_horks
end.should raise_error(Specific::Error)
你根本扭轉你的測試用例的測試,以測試爲陰性結果,而不是陽性結果。
-1
您將-w
開關切換到Cucumber命令。
它會輸出正常的格式,但最後它會給出一個總結,詳細說明所有測試用例是否失敗,如果有任何通過它將指定哪些。
0
這是一個非常複雜的例子,但最終結果是一個非常乾淨的方法,期望黃瓜場景失敗。這些只是我正在開發的一個項目中的一小部分組件。創建缺少數據的用戶失敗的原因是因爲我的用戶模型中有一些驗證器。所有的源代碼可以找到here。
功能/ step_definitions/before_step.rb
Before("[email protected]") do
def assert_cucumber(assersion, msg = "an error was thrown")
assert(assersion == true, msg)
end
end
Before("@fails") do
def assert_cucumber(assersion, msg = "an error was thrown")
assert(assersion == false, msg)
end
end
功能/ step_definitions/user_step.rb
Given /^a user with$/ do |params|
params = params.rows_hash
unless User.find_by({username: params[:username]})
assert_cucumber(User.new(params).save, "could not create user")
end
end
功能/ user.feature
Scenario: check if userers exsist
Given a user with
| username | johnsmith |
| email | [email protected] |
| password | password |
Then a user with username "johnsmith"
@fails
Scenario: create user with missing data
Given a user with
| username | johndoe |
Then a user with username "johndoe"
相關問題
- 1. 黃瓜步驟定義失敗
- 2. 黃瓜步驟失敗的設計,連接拒絕?
- 3. 黃瓜設計登錄步驟失敗(導軌3.2,黃瓜,水豚,rspec)
- 4. 黃瓜測試雙:場景失敗,但其步驟通過
- 5. 黃瓜步驟失敗嵌套控制器
- 6. 在失敗後繼續運行黃瓜步驟
- 7. 黃瓜+硒隨機失敗
- 8. 黃瓜水豚fill_in失敗
- 9. 黃瓜方案失敗
- 10. 如何使黃瓜場景失敗
- 11. 如何強制黃瓜場景失敗?
- 12. 如何調試隨機黃瓜失敗?
- 13. 異步步驟,等待所有步驟成功或失敗
- 14. 滑軌+黃瓜+硒:測試失敗一起,分別傳遞
- 15. 黃瓜軌失敗的情況下
- 16. SSIS如何在並行步驟失敗時失敗包?
- 17. 黃瓜 - 如何標記預期失敗作爲已知問題?
- 18. QtCreator部署步驟失敗
- 19. 測試用戶註冊黃瓜 - 失敗
- 20. Arquillian與黃瓜構建失敗
- 21. 失敗黃瓜測試,使用Rails 3.0.9
- 22. 截圖上與Java +黃瓜失敗
- 23. 黃瓜自定義設計失敗
- 24. 設計註銷 - 黃瓜步驟失敗,但應用程序運行正常
- 25. 如何使步驟定義文件中的步驟失敗,以便在黃瓜 - 水豚環境中自動將情景標記爲失敗?
- 26. 如何傳遞參數「ABC」:「12」到黃瓜(Java)的步驟
- 27. Force Octopus部署步驟失敗,如果PostDeploy Powershell腳本失敗
- 28. 黃瓜和水豚測試失敗,我該如何調試?
- 29. 黃瓜步驟上錯誤的步驟
- 30. AWS EMR步驟失敗,因爲它創建的作業失敗
這裏的目的不是爲了測試狀態不正確,則是在狀態不正確時測試測試失敗。換句話說,我們正在測試我們的步驟,而不是測試狀態。 – kerkeslager 2011-02-03 16:57:35