controller測試
1 看一個普通,基本的使用者請求是否能引發預計的ActiveRecord正常工作,需要的資料是否傳給了view
2 檢測controller是否能夠适當地處理不合格式的請求
3 檢測權限系統是否正常工作,比如一個使用者請求了登入或者特定角色才能通路的頁面
view測試
1 view不報錯
2 view中的資料是否是你計劃生成的資料
3 檢測根據角色動态生成的部分,比如:登入連結,管理者連結等是否正确顯示
內建測試與controller測試的差別
需要對session,cookie等跨action的資料的正确性進行測試
測試層次
1 model
2 controller
3 view(helper)
4 內建
5 驗收
要遵照mvc結構。反例是如果将屬于model層的東西放到controller中,那麼,你至少需要模拟一個http請求,
才能開始測試
測試寫到什麼時候夠了
我隻能說,你可以在rcov中達到100%,但是rcov(或者其他測試工具)的計算方式是有問題的,你永遠無法100%
測試,就像你永遠也寫不出完美的軟體一樣,夠好,就可以了
什麼時候使用mock/stub
1 解決依賴性
比如:你在寫一個支付接口,但是現在你在開發階段,還不想和銀行打交道
2 解決某些情況
比如:你寫了一個扔色子系統,随機生成1-6的數字,而你需要對擲出6點時的程式進行測試
測試程式的失敗情況,而失敗情況可以用stub輕松生成
3 測試過程時,未實作的功能的替代
4 Interface Discovery
設計api時,你需要它
一個測試不要使用太多mock或者stub,使用三個以上就要注意了
是否測試負面情況
上帝保佑我們有足夠的時間
先寫測試還是後寫測試
如果你接下來要做的隻是驗證正确性,那麼你可以後寫測試,不過,驗證正确性隻是TDD的目的之一,你至少要在心
裡記住,先寫測試可以改善代碼品質
mock類庫
rails-test-prescription 7.7 已做出了明了的比較
你至少需要熟悉的測試工具
1 rspec
2 cucumber
3 capybara
4 factory-girl
5 database-cleaner