// Copyright 2016 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.
// Package httptest provides utilities for HTTP testing.
package httptestimport ()// NewRequest wraps NewRequestWithContext using context.Background.func (, string, io.Reader) *http.Request {returnNewRequestWithContext(context.Background(), , , )}// NewRequestWithContext returns a new incoming server Request, suitable// for passing to an [http.Handler] for testing.//// The target is the RFC 7230 "request-target": it may be either a// path or an absolute URL. If target is an absolute URL, the host name// from the URL is used. Otherwise, "example.com" is used.//// The TLS field is set to a non-nil dummy value if target has scheme// "https".//// The Request.Proto is always HTTP/1.1.//// An empty method means "GET".//// The provided body may be nil. If the body is of type *bytes.Reader,// *strings.Reader, or *bytes.Buffer, the Request.ContentLength is// set.//// NewRequest panics on error for ease of use in testing, where a// panic is acceptable.//// To generate a client HTTP request instead of a server request, see// the NewRequest function in the net/http package.func ( context.Context, , string, io.Reader) *http.Request {if == "" { = "GET" } , := http.ReadRequest(bufio.NewReader(strings.NewReader( + " " + + " HTTP/1.0\r\n\r\n")))if != nil {panic("invalid NewRequest arguments; " + .Error()) } = .WithContext()// HTTP/1.0 was used above to avoid needing a Host field. Change it to 1.1 here. .Proto = "HTTP/1.1" .ProtoMinor = 1 .Close = falseif != nil {switch v := .(type) {case *bytes.Buffer: .ContentLength = int64(.Len())case *bytes.Reader: .ContentLength = int64(.Len())case *strings.Reader: .ContentLength = int64(.Len())default: .ContentLength = -1 }if , := .(io.ReadCloser); { .Body = } else { .Body = io.NopCloser() } }// 192.0.2.0/24 is "TEST-NET" in RFC 5737 for use solely in // documentation and example source code and should not be // used publicly. .RemoteAddr = "192.0.2.1:1234"if .Host == "" { .Host = "example.com" }ifstrings.HasPrefix(, "https://") { .TLS = &tls.ConnectionState{Version: tls.VersionTLS12,HandshakeComplete: true,ServerName: .Host, } }return}
The pages are generated with Goldsv0.7.0-preview. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.