首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Go中使用httptest.NewServer的自定义URL

在Go中使用httptest.NewServer的自定义URL
EN

Stack Overflow用户
提问于 2017-02-14 06:21:24
回答 1查看 7.8K关注 0票数 10

我用Go语言创建了一个http测试服务器,在一些rest调用上运行UT。我的代码如下。

代码语言:javascript
运行
复制
type student struct{
FirstName string
LastName string
}

func testGetStudentName() {
    testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    response = new(student)
    response.FirstName = "Some"
    response.LastName = "Name"
    b, err := json.Marshal(response)
    if err == nil {
            fmt.Fprintln(w, string(b[:]))
        }
    }))
    defer ts.Close()
    student1 := base.getStudent("123")
    log.Print("testServerUrl",testServer.URL) //prints out http://127.0.0.1:49931 ( port changes every time this is run)

   ts.URL = "http://127.0.0.1:8099" //this assignment does not quite change the URL of the created test server.
}

在被测试的文件中,

代码语言:javascript
运行
复制
var baseURL = "http://originalUrl.com"
var mockUrl = "http://127.0.0.1:49855"
func Init(mockServer bool){
    if mockServer {
        baseURL = mockUrl
    }
}

func getStudent(id String){
     url := baseUrl + "/student/" + id
     req, err := http.NewRequest("GET", url, nil)
}

这个init是从我的测试中调用的。

这将创建一个新的测试服务器,并在随机端口上运行调用。我可以在我指定的端口上运行此服务器吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 13:48:12

大多数应用程序使用在NewServer或NewUnstartedServer中分配的端口,因为此端口不会与机器上正在使用的端口冲突。它们将服务的基URL设置为test server's URL,而不是分配端口。

如果您确实要设置侦听端口,请执行以下操作:

代码语言:javascript
运行
复制
// create a listener with the desired port.
l, err := net.Listen("tcp", "127.0.0.1:8080")
if err != nil {
    log.Fatal(err)
}

ts := httptest.NewUnstartedServer(handler)

// NewUnstartedServer creates a listener. Close that listener and replace 
// with the one we created.
ts.Listener.Close()
ts.Listener = l

// Start the server.
ts.Start()

// Run your tests here.

// Cleanup.
ts.Close()
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42214611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档