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