我正在使用Ruby on Rails項目上的設計寶石,我想知道是否應該爲它編寫測試或者假設所有第三方代碼都是自行正確測試的。我應該從寶石測試功能嗎?
如果我編寫測試,我應該只進行集成測試還是可以合理地添加一些控制器和模型測試?
我正在使用Ruby on Rails項目上的設計寶石,我想知道是否應該爲它編寫測試或者假設所有第三方代碼都是自行正確測試的。我應該從寶石測試功能嗎?
如果我編寫測試,我應該只進行集成測試還是可以合理地添加一些控制器和模型測試?
通常假定第三方代碼總是被測試。
例如,如果您創建使用ActiveRecord Rails的模型,它沒有意義的測試呼叫
Model.create!(foo: 'bar')
創建具有屬性foo
等於bar
記錄。否則,您的Rails應用程序將最終產生大量重複測試。
但是,除了您自己的代碼的規範之外,測試代碼與第三方庫的集成是個好習慣。
請注意,對於集成這個詞,我並不嚴格意味着Rails使用它們的方式進行集成測試。例如,如果您創建了一個自定義命名範圍,並且您編寫了一個測試以創建一些記錄並測試該命名範圍僅返回預期記錄,嚴格來說,這實際上是一個集成測試(儘管它在單元測試中定義爲單元測試Rails項目的文件夾)。
如果您重載了Devise控制器,那麼您應該測試您正在使用的方法的所有功能。
如果我們談論的是設計,那麼我建議你進行一些整合+驗收測試,因爲設計是不是很人性化的用戶歡迎。 Devise出現了許多問題,並以幾小時的調試結束,這可能會在一些驗收測試中得到解決。而且,如果你在Devise中使用OmniAuth,那麼它就是必須要測試的。
而且,這將是有益的給你寫這些測試,所以有一天,你可以在邏輯改變你的日誌記錄,然後你不能沒有測試它運行你正在寫的代碼。