我对 travis 和 Go 很陌生。我对 https 服务器进行了测试,它在我的本地计算机上运行时运行良好,但由于尝试连接到服务器时出错,go test -v ./...它在 Travis 上的大部分时间都会失败。getsocketopt: connection refused它应该在听https://localhost:8081。我.travis.yml能做些什么来防止这种情况发生吗?这是我的 .travis.ymllanguage: gogo: - 1.6 - tipmatrix: allow_failures: - go: tipbefore_install: - go get -v github.com/golang/lint/golintinstall: - go get -v -d -t ./...这是我的服务器创建代码:func (webserver *WebServer) Start(keyLocation string, certLocation string) <-chan error { errors := make(chan error, 1) go func() { defer close(errors) errors <- http.ListenAndServeTLS(fmt.Sprintf(":%v", webserver.config.WebServerPort), certLocation, keyLocation, nil) }() return errors}和客户端代码:func createHTTPClient(t *testing.T) *http.Client { t.Log("Creating a test client...") tr := &http.Transport { TLSClientConfig: &tls.Config {InsecureSkipVerify: true}, } t.Log("Created a test client") return &http.Client {Transport: tr}}与客户的样品请求request, _ := http.NewRequest(httpmethod, fmt.Sprintf("https://localhost:%d/token", port), nil)client.Do(request)在测试中启动服务器的示例errors := server.Start(testKeyLocation, testCertLocation)//Handle errors from servergo func() { select { case err := <-errors: if err != nil { t.Fatalf("Error with server: %s", err.Error()) } }}()
1 回答

慕娘9325324
TA贡献1783条经验 获得超4个赞
您在启动服务器和尝试连接之间没有同步。在启动服务器后添加一个time.Sleep
应该突出这个问题。
减少服务器未准备好的窗口的一种方法是net.Listener
同步创建,然后http.Server
在启动服务器之前将打开的侦听器添加到配置中。可以为您执行此httptest.Server
操作,以及绑定到随机端口以防止测试期间发生冲突,并使用本地测试 TLS 证书。
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消