3
所以这一个真的很奇怪,我试图得到一个模拟响应呈现JSON。我的测试是这样的:httptest.ResponseRecorder没有字段或方法结果
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()
。
您使用的是哪个版本的Go?我发现* httptest.ResponseRecorder在官方(1.7)godoc上有一个Result()方法,但是当我运行我的本地godoc时(我目前仍然安装了1.6)我无法找到它。 编辑:果然,[这是Go1.7的一个新功能](https://golang.org/doc/go1.7#net_http_httptest) –
如果你认为你已经升级到1.7,它可能仍然值得尝试清理安装Go的目录,然后放入一个“全新的”Go1.7目录,然后在再次尝试测试之前删除“pkg”和“bin”目录。 –
呃......很好!我期待这一点,但我一定错过了。谢谢! – onetwopunch