Golang,如何用gock模拟go-resty

时间:2017-10-18 14:50:01

标签: unit-testing go

我是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")
    }
}

我在这里做错了什么?

0 个答案:

没有答案