1 回答

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
好的。不確定,但工作。
似乎測(cè)試順序在 TestCoverage 上非常重要,創(chuàng)建從最少到第一個(gè)評(píng)估的測(cè)試就可以if err != nil
了。
我的代碼做一個(gè)簡(jiǎn)單的獲取 API:
創(chuàng)建一個(gè)響應(yīng)對(duì)象
格式化 URL + ID
創(chuàng)建一個(gè) Http.NewREquest
評(píng)估 NewRequest 錯(cuò)誤
執(zhí)行 http.Client.Do(request)
評(píng)估做錯(cuò)
等等等等……
...
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
}
...
按以下順序創(chuàng)建的測(cè)試。
func TestFetchById_WhenHttpNewRequestFails(t *testing.T) {...
func TestFetchById_WhenClientDoFails(t *testing.T) {...
首先,我測(cè)試 NewRequest 錯(cuò)誤,然后測(cè)試 Client.Do(req) 錯(cuò)誤。這樣我就獲得了 80% 的測(cè)試覆蓋率......
當(dāng)我更改測(cè)試方法的順序時(shí):
func TestFetchById_WhenClientDoFails(t *testing.T) {...
func TestFetchById_WhenHttpNewRequestFails(t *testing.T) {...
我有 100% 的測(cè)試覆蓋率。我不知道這是一個(gè)問(wèn)題還是應(yīng)該是那樣的......但是,現(xiàn)在,它運(yùn)行良好。
- 1 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報(bào)