我是Go的新手,我正在尝试编写单元测试,以检查我从API检索的JSON数据是否已成功编组到其各自的对象中。
我使用go-resty API发出请求,gock API尝试嘲笑它。
以下是我要测试的功能:
func GetTasks() []Task {
resp, err := MakeRequest().
SetResult([]Task{}).
Get("http://my-api/task")
if err != nil {
log.Errorf("error when try to get tasks list %s", err)
return []Task{}
}
tasks := resp.Result()
t, ok := tasks.(*[]Task)
if ok != true {
log.Errorf("error when try convert tasks list response %s", ok)
return []Task{}
}
return *t
}
这是测试代码:
func Test_GetTasks(t *testing.T) {
testData, err := ioutil.ReadFile("../testdata/task-list.json")
if err != nil {
t.Error("Error retrieving json test data: %s", err)
t.Fail()
}
defer gock.Off()
gock.New("http://my-api").
Get("/task").
Reply(200).
JSON(testData)
var tasks []Task
tasks = GetTasks()
t.Logf("Tasks: %d", len(tasks))
if len(tasks) == 0 {
t.Error("No tasks were retrieved")
}
}
我在这里做错了什么?