我一直在网上搜索,并且在golang测试中发布表单方面找不到多少。这是我的尝试。我收到错误"拨tcp:地址:: 1"中的冒号太多虽然。如果我将地址更改为" http://localhost:8080/"我得到"拨打tcp 127.0.0.1:8080:连接被拒绝"。
我已经读过,如果你把(IPv6)地址放在括号中,括号将解决问题,但后来我得到错误无法识别的协议。
var addr = "http://::1/"
h := handlers.GetHandler()
server := httptest.NewServer(h)
server.URL = addr
req, err := http.PostForm(addr+"login",
url.Values{"username": {"lemonparty"}, "password": {"bluewaffle"}})
if err != nil {
log.Fatal(err)
}
答案 0 :(得分:4)
tl; Listener
中的httptest.Server
不会使用httptest.Server.URL
作为要监听的网址。它并不关心这个价值是什么。它侦听本地主机最低开放端口号。
httptest.Server
上的网址属性并没有真正做任何事情。改变你想要的一切,只是不要在那里发送你的请求。查看此示例程序https://play.golang.org/p/BsH38WLkrJ
基本上,如果我更改服务器URL然后将请求发送到我设置它的值不起作用,但是如果我将它发送到它的默认值。
同时查看源http://golang.org/src/net/http/httptest/server.go?s=415:1018#L65以及文件底部的证书;显然硬编码为本地主机上的最低开放端口。如果您想要Listener
。