所以这个真的很奇怪,我试图得到一个呈现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()
时,它只是失败了。
答案 0 :(得分:2)
我最初将此作为评论来解决,因为我不确定相关性,但对于后代:
在线godoc始终引用最新版本。在这种情况下,Go1.7中添加了Result()
方法,该方法仅在上周发布。如有疑问,请运行godoc -server
或godoc <packagename>
。