1 回答

TA貢獻1793條經(jīng)驗 獲得超6個贊
是的,該測試的方向是正確的。您不應該嘗試測試返回的處理程序的內部結構,因為該第三方包將來可能會以您沒有預料到的方式發(fā)生變化。
是否可以只驗證從 MakeHandler() 返回的內容而不是在請求期間?
不是很好。MakeHandler()
返回一個接口,理想情況下你會在測試中只使用接口方法。
您可以查看由返回的類型的文檔,mux.NewRouter()
看看具體類型中是否有任何字段或方法可以為您提供信息,但這可能會很痛苦 - 無論是為了理解測試(很少使用類型來了解)以及由于未來對mux
包的修改可能會如何影響您的代碼而不破壞測試。
編寫適當?shù)膯卧獪y試的正確方法是什么?
你的例子實際上是在正確的方向。測試時MakeHandler()
,您正在測試它返回的處理程序是否能夠處理所有路徑并為每個路徑調用正確的處理程序。所以你需要調用這個 ServeHTTP()
方法,讓它做它自己的事情,然后測試它是否正常工作。僅內省處理程序并不能保證實際使用過程中的正確性。
不過,您可能需要發(fā)出實際有效的請求,以便能夠根據(jù)響應正文或標頭了解調用了哪個處理程序。這應該使測試達到一個相當合理的狀態(tài)。(我想你已經(jīng)有了)
同樣,我會為將來添加的每條路線添加一個基本的子測試。詳細的處理程序測試可以寫在單獨的函數(shù)中。
- 1 回答
- 0 關注
- 102 瀏覽
添加回答
舉報