httptest.ResponseRecorder没有字段或方法Result

时间:2016-08-24 00:09:20

标签: unit-testing go

所以这个真的很奇怪,我试图得到一个呈现JSON的模拟响应。我的测试看起来像这样:

import (
    "fmt"
    "net/http"
    "net/http/httptest"
    "reflect"
    "strings"
    "testing"
)
...

func TestMessageFromResponse(t *testing.T) {
    mc := MyController{}
    body := "{ \"message\":\"kthxbai\" }"
    w := httptest.NewRecorder()
    w.Write([]byte(body))
    resp := w.Result()
    msg := mc.messageFromResponse(resp)
    if msg != "kthxbai" {
        t.Errorf("Expected response body to be kthxbai but was %s", msg)
    }
}

我在messageFromResponse上测试方法MyController,但它甚至没有构建。当我在项目目录中运行go test时,出现以下错误:

./my_controller_test.go:115: w.Result undefined (type *httptest.ResponseRecorder has no field or method Result)

我还应该提一下,我在同一个文件的其他位置成功使用httptest.ResponseRecorder作为编写器存根,但当我尝试访问Result()时,它只是失败了。

1 个答案:

答案 0 :(得分:2)

我最初将此作为评论来解决,因为我不确定相关性,但对于后代:

在线godoc始终引用最新版本。在这种情况下,Go1.7中添加了Result()方法,该方法仅在上周发布。如有疑问,请运行godoc -servergodoc <packagename>

检查您当地的godoc