所以这个真的很奇怪,我试图获得一个呈现 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
作为编写器 stub ,但是当我尝试访问 Result()
时它只是失败了。 最佳答案
我最初将此作为评论进行了处理,因为我不确定相关性,但为了后代:
在线 godoc 始终引用最新版本。在这种情况下,Result()
方法是在上周才发布的 Go1.7 中添加的。如有疑问,请通过运行 godoc -server
或 godoc <packagename>
检查您的本地 godoc。
关于unit-testing - httptest.ResponseRecorder 没有字段或方法结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39112511/