aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhaivat Pandit <dhaivatpandit@gmail.com>2016-08-22 10:29:02 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2016-08-23 05:12:10 +0000
commitcd5ab9798612a08fd39e29ccd6bc10112d1bef0a (patch)
treeb4bb8cba0aeaa03b19f9a2a876910f96e4b04c46
parent93b753f525b62a2a860fc2ba2d4ea3f788c275f9 (diff)
downloadgo-cd5ab9798612a08fd39e29ccd6bc10112d1bef0a.tar.xz
net/http/httptest: updated example to use Result()
example for httptest.Recorder was inspecting Recoder directly. Using Result() to convert Recorder into a http.Response yields a much better user experience. Closes #16837 Change-Id: Id0e636c12cd6adb1ba11f89953ff2b0f43758cf3 Reviewed-on: https://go-review.googlesource.com/27495 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
-rw-r--r--src/net/http/httptest/example_test.go16
-rw-r--r--src/net/http/httptest/recorder.go3
2 files changed, 16 insertions, 3 deletions
diff --git a/src/net/http/httptest/example_test.go b/src/net/http/httptest/example_test.go
index 124ce7513e..bd2c49642b 100644
--- a/src/net/http/httptest/example_test.go
+++ b/src/net/http/httptest/example_test.go
@@ -6,6 +6,7 @@ package httptest_test
import (
"fmt"
+ "io"
"io/ioutil"
"log"
"net/http"
@@ -14,15 +15,24 @@ import (
func ExampleResponseRecorder() {
handler := func(w http.ResponseWriter, r *http.Request) {
- http.Error(w, "something failed", http.StatusInternalServerError)
+ io.WriteString(w, "<html><body>Hello World!</body></html>")
}
req := httptest.NewRequest("GET", "http://example.com/foo", nil)
w := httptest.NewRecorder()
handler(w, req)
- fmt.Printf("%d - %s", w.Code, w.Body.String())
- // Output: 500 - something failed
+ resp := w.Result()
+ body, _ := ioutil.ReadAll(resp.Body)
+
+ fmt.Println(resp.StatusCode)
+ fmt.Println(resp.Header.Get("Content-Type"))
+ fmt.Println(string(body))
+
+ // Output:
+ // 200
+ // text/html; charset=utf-8
+ // <html><body>Hello World!</body></html>
}
func ExampleServer() {
diff --git a/src/net/http/httptest/recorder.go b/src/net/http/httptest/recorder.go
index 0ad26a3d41..725ba0b70a 100644
--- a/src/net/http/httptest/recorder.go
+++ b/src/net/http/httptest/recorder.go
@@ -136,6 +136,9 @@ func (rw *ResponseRecorder) Flush() {
// first write call, or at the time of this call, if the handler never
// did a write.
//
+// The Response.Body is guaranteed to be non-nil and Body.Read call is
+// guaranteed to not return any error other than io.EOF.
+//
// Result must only be called after the handler has finished running.
func (rw *ResponseRecorder) Result() *http.Response {
if rw.result != nil {