我是新來黃瓜測試,我想了解何時使用黃瓜和何時使用RSpec。對於我的模型,我知道我應該使用RSpec對它們進行測試,並且我知道,如果我編寫黃瓜故事,則不需要編寫RSpec請求規範。我不知道何時使用視圖和控制器。我是否應該使用RSpec來測試我的視圖和控制器,或者我可以跳過它們,因爲我正在使用Cucumber進行更高級別的測試?任何建議將不勝感激!謝謝!何時使用Cucumber以及何時使用RSpec?
回答
我使用RSpec來驅動我的模型的開發和測試,並在一定程度上驅動我的控制器和Cucumber來驅動我的視圖的開發和測試(以及隨後它們與控制器的集成)。
我不覺得編寫Cucumber測試允許我「跳過」編寫RSpec測試,因爲在創建任何視圖之前,模型圖層中會進行大量的開發。
如果你一直在寫黃瓜場景而不是單元測試,那麼你可能會發現你的測試運行速度很慢。如果測試速度慢,你可能不會經常運行它們,所以你的開發速度會放慢。
您可以使用RSpec進行與Cucumber相同級別的集成測試。如果您需要與非開發人員共享和討論功能,那麼Cucumber是一個巨大的幫助。但即使你是一個獨立的開發者,Cucumber也可以在你需要的行爲和潛在的實現之間扮演一個「精神保衛者」的角色。大多數人遵循的標準做法是爲模型編寫大量的單元測試,爲控制器編寫最少的測試,很少有任何視圖單元測試。然後,您將使用Cucumber檢查一切正常交互(確保您的場景涵蓋控制器和視圖中的任何循環/條件)。
只是一小部分,可能對您有所幫助。許多人認爲(我也這樣做)黃瓜比程序員的實際測試框架更麻煩。只要您不必通過與不太瞭解編程的客戶討論場景進行合作,我會強烈建議您不要使用黃瓜。我和DHH在一起。但RSpec,使用,甚至濫用:)
我不確定是否可以在這裏推薦一本書,但the RSpec book確實提供了一個很好的實例如何Cucumber和RSpec可以交叉行爲驅動的發展Ruby中的一個小型命令行遊戲。
簡而言之:編寫採用的看你的最終用戶,以及使用自己的觀點你的RSpec規格的點的黃瓜功能爲開發人員測試套件的執行速度之間的良好平衡,測試粒度(測試失敗時錯誤消息的精確程度)和文檔覆蓋率(Cucumber功能可以看作始終最新的文檔 - the very own RSpec documentation is a great example of that)。
- 1. 如何以及分別使用Cucumber和Rspec來測試什麼?
- 2. 何時使用==以及何時使用?
- 3. 何時使用belongsTo以及何時hasMany?
- 4. 何時使用jQuery.ajax以及何時使用jQuery.post?
- 5. 何時使用Apache Helix以及何時使用Apache Mesos
- 6. 何時使用Abstract Factory以及何時使用Factory Method?
- 7. 何時使用LEFT JOIN以及何時使用INNER JOIN?
- 8. PHP:何時使用Traits以及何時使用靜態方法?
- 9. 何時使用Value Formatter以及何時使用Value Resolver
- 10. 何時使用json文件以及何時使用js文件?
- 11. 何時使用:something =>'something'以及何時使用:something,'something'?
- 12. Elixir:何時使用'數字'以及何時使用'整數'
- 13. 何時使用Class.isInstance()以及何時使用instanceof運算符?
- 14. 何時使用Socket以及何時在Flex中使用XMLSocket?
- 15. 何時使用以及何時不使用Python 2.7_中的__init__
- 16. 何時使用undef_method以及何時使用remove_method?
- 17. 何時使用ICommand包裝RelayCommand以及何時使用Just ReplayCommand?
- 18. 何時使用Core Data以及何時使用Sqlite?
- 19. 何時使用數組以及何時使用單元陣列?
- 20. 何時使用DataTrigger以及何時使用Converter?
- 21. 何時使用Docker-Compose以及何時使用Docker-Swarm
- 22. 何時使用dup以及何時在Ruby中使用克隆?
- 23. 何時使用Gen_Fsm以及何時使用Gen_Server?
- 24. 何時使用佈局以及何時使用活動?
- 25. 何時使用IDataReader以及何時使用DataReader?
- 26. 何時使用uid以及何時在$ $ $ $中使用$ id
- 27. 何時使用ASP.NET驗證控件以及何時不使用?
- 28. 何時使用Pig以及何時使用Java for Mapreduce?
- 29. 何時使用Comparator以及何時在Java中使用Comparable?
- 30. 何時使用Twitter Bootstrap以及何時使用HTML5 Boilerplate?
您在多大程度上用RSpec文本化您的控制器? – agentbanks217 2011-04-03 22:02:14
因爲我試圖在模型層上保留儘可能多的邏輯,所以現在很少,但是如果出於某種原因,控制器操作中存在相當多的邏輯,我喜歡寫一個規範來覆蓋它(爲了我自己的理智)。 – Ant 2011-04-03 22:07:59