これは本当に奇妙なので、私は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)
}
}
私はMyController
上の方法messageFromResponse
をテストするが、そのさえ構築していませんよ。私は私のプロジェクトのディレクトリに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