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 关注
- 98 浏览
添加回答
举报