dongyingdao8867 2019-03-28 12:43
浏览 215
已采纳

Golang-在方法中测试HTTP请求

I'm a little confused when it comes to testing in Go. I've read that abstracting to interfaces should be the ideal way to go in some cases, in other cases I see TestTables. I'm not too sure when to apply either one. For instance, how would one go about testing the function below.

type User{
    Name string           `json:"name"`
    IsMarried bool        `json:"isMarried"`
    Nicknames []string    `json:"nicknames"`
}

func (u *User) Create() (*http.Response, error) {
    data, err := json.Marshal(u)
    if err != nil {
        return nil, err
    }
    urll := EndpointBase+"/users"

    req, err := http.NewRequest(http.MethodPost, urll,  bytes.NewReader(data))
    if err != nil {
        return nil, err
    }

    resp, err := auth.Session.Client.Do(req)
    if err != nil {
        return nil, err
    }
    return resp, nil
}
  • 写回答

1条回答 默认 最新

  • droc60607 2019-03-28 12:51
    关注

    Abstracting to interfaces and table-driven tests are unrelated concepts that are commonly both used.

    You would abstract to interfaces for your dependencies so that you can mock/stub them as needed (in this case, your dependencies are whatever you're calling with HTTP, whatever auth is, and whatever the global EndpointBase is).

    Table-driven tests allow you to write multiple test cases more efficiently with less repeated code in your test.

    I'd say that unit testing this function won't have much value though, because it's such a thin wrapper around an HTTP call. An integration test would be more useful, in which case abstracting to interfaces wouldn't help with testing (though it could be a good design decision anyway).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题