为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Go 中将测试编写为方法?

如何在 Go 中将测试编写为方法?

Go
神不在的星期二 2021-08-23 15:36:36
我有以下测试:package api_appfunc (api *ApiResource) TestAuthenticate(t *testing.T) {    httpReq, _ := http.NewRequest("POST", "/login", nil)    req := restful.NewRequest(httpReq)    recorder := new(httptest.ResponseRecorder)    resp := restful.NewResponse(recorder)    api.Authenticate(req, resp)    if recorder.Code!= 404 {        t.Logf("Missing or wrong status code:%d", recorder.Code)    }}我想测试这个功能,但是当我这样做的时候go test api_app -v测试从来没有这样。我明白那是因为我有这个功能的接收器。有什么方法可以测试这个东西吗?
查看完整描述

1 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

该测试包可与功能,而不是方法。编写一个函数包装器来测试该方法:


func TestAuthenticate(t *testing.T) {

   api := &ApiResource{} // <-- initialize api as appropriate.

   api.TestAuthenticate(t)

}

您可以将所有代码移动到测试函数并消除该方法:


func TestAuthenticate(t *testing.T) {

    api := &ApiResource{} // <-- initialize api as appropriate.

    httpReq, _ := http.NewRequest("POST", "/login", nil)

    req := restful.NewRequest(httpReq)


    recorder := new(httptest.ResponseRecorder)

    resp := restful.NewResponse(recorder)


    api.Authenticate(req, resp)

    if recorder.Code!= 404 {

        t.Logf("Missing or wrong status code:%d", recorder.Code)

    }

}


查看完整回答
反对 回复 2021-08-23
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信