1 回答

TA貢獻1780條經驗 獲得超1個贊
好的。不確定,但工作。
似乎測試順序在 TestCoverage 上非常重要,創建從最少到第一個評估的測試就可以if err != nil
了。
我的代碼做一個簡單的獲取 API:
創建一個響應對象
格式化 URL + ID
創建一個 Http.NewREquest
評估 NewRequest 錯誤
執行 http.Client.Do(request)
評估做錯
等等等等……
...
response := &Response{}
url := fmt.Sprintf(pokeapiURLById, pokeId)
request, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, err
}
resp, err := Client.Do(request)
if err != nil {
return nil, err
}
...
按以下順序創建的測試。
func TestFetchById_WhenHttpNewRequestFails(t *testing.T) {...
func TestFetchById_WhenClientDoFails(t *testing.T) {...
首先,我測試 NewRequest 錯誤,然后測試 Client.Do(req) 錯誤。這樣我就獲得了 80% 的測試覆蓋率......
當我更改測試方法的順序時:
func TestFetchById_WhenClientDoFails(t *testing.T) {...
func TestFetchById_WhenHttpNewRequestFails(t *testing.T) {...
我有 100% 的測試覆蓋率。我不知道這是一個問題還是應該是那樣的......但是,現在,它運行良好。
- 1 回答
- 0 關注
- 114 瀏覽
添加回答
舉報