簡體   English   中英

我該如何測試我的Rails應用程序?

[英]How should I test my Rails app?

在過去的幾天里,我一直在慢慢地將測試添加到現有的rails應用程序中,我一直在努力。

我只是想弄清楚多少以及什么樣的測試(單元,功能,集成)足以節省我調試和修復破壞現有功能的部署的時間。

我是唯一一個在這個應用程序上工作的人。 它基本上是一個小公司(約20名員工)的庫存管理數據庫。 我沒有從一開始就添加測試,因為我沒有真正看到這一點,但我有一些部署在最后一點點搞亂現有的功能,所以我認為添加可能是一件好事。

我是否需要單獨測試我的模型和控制器並執行集成測試? 似乎有開發人員認為,如果從那里收到錯誤,你應該只進行集成測試和回溯來找出問題所在。

到目前為止,我正在使用RSpec + Factory Girl + Shoulda。 這使得為​​模型設置測試變得非常容易。

我現在開始使用控制器而且失去了一點點。 我知道如何測試單個控制器,但我不知道是否應該使用集成測試測試應用程序流,因為這將同時測試控制器。

我使用集成測試來測試成功路徑和一般故障路徑,但是對於邊緣情況或更深入的場景,我編寫模型/視圖/控制器測試。

我通常在編寫應用程序中的功能之前編寫測試,但如果您想在之后添加測試,那么我建議使用SimpleCov之類的東西來查看應用程序的哪些區域需要更多測試,並慢慢為您的應用程序構建測試覆蓋率。

在應用程序已經編寫完成后編寫測試將是乏味的。 至少應該測試集成情況(將測試大多數控制器功能和視圖),並且還單獨建模測試,以便模型調用按照您認為應該的方式工作。

對於集成測試,我發現Capybara易於使用。

根據經驗, 大多數測試需要是單元,一些功能,幾乎沒有集成。

Rails全心全意地堅持這一點,你也應該這樣做。

至少你必須:

  • 對每個模型進行單元測試,為每個模型中的每個驗證添加一個測試用例,最后添加最后一個用於確保模型保存的測試用例。 如果你有類似dependant: :destroy東西dependant: :destroytouch: true相關模型上的touch: truehas_manybelongs_to ),也為它們添加測試用例。
  • 每個控制器的功能測試 每個操作的測試用例。 某些操作可能有多個響應(例如422錯誤),因此添加另一個案例來測試錯誤響應。 如果您有授權過濾器,也請測試它們。

然后,您可以對典型的新用戶流進行集成測試。 喜歡注冊 - >創建帖子 - >查看 - >注銷。 另一個是確保未經授權的用戶無法訪問您的資源。

從現在開始,如果沒有上述測試,請不要提交任何代碼。

種植樹木的最佳時間是10年前,現在是第二好的時間 ,所以開始測試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM