gpt4 book ai didi

rest - Golang HTTP REST 模拟

转载 作者:IT王子 更新时间:2023-10-29 01:44:35 26 4
gpt4 key购买 nike

我正在编写一个连接到具有 REST 端点的服务器的客户端。客户端需要发出 11 个不同请求的链来完成一个操作(这是一个 rococo 备份系统)。

我正在用 Go 编写我的客户端,我也想用 Go 编写我的模拟/测试。我不清楚的是名为 func TestMain 的测试如何调用客户端的 func main(),以测试 11 个请求链的完成情况。

我的客户端的二进制文件将以下列方式从 shell 运行:

$ client_id=12345 region=apac3 备份

如何从测试中调用 func main() 并设置环境变量?还是有另一种方法? (我是 comfortable writing tests,所以这不是问题)

我正在查看 jarcoal/httpmock 中的高级示例(但我可以使用另一个图书馆)。在示例的最后,//do stuff that adds and checks articles,那是我调用 main() 的地方吗?

我已经在下面粘贴了高级示例,以供将来引用。


func TestFetchArticles(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()

// our database of articles
articles := make([]map[string]interface{}, 0)

// mock to list out the articles
httpmock.RegisterResponder("GET", "https://api.mybiz.com/articles.json",
func(req *http.Request) (*http.Response, error) {
resp, err := httpmock.NewJsonResponse(200, articles)
if err != nil {
return httpmock.NewStringResponse(500, ""), nil
}
return resp, nil
},
)

// mock to add a new article
httpmock.RegisterResponder("POST", "https://api.mybiz.com/articles.json",
func(req *http.Request) (*http.Response, error) {
article := make(map[string]interface{})
if err := json.NewDecoder(req.Body).Decode(&article); err != nil {
return httpmock.NewStringResponse(400, ""), nil
}

articles = append(articles, article)

resp, err := httpmock.NewJsonResponse(200, article)
if err != nil {
return httpmock.NewStringResponse(500, ""), nil
}
return resp, nil
},
)

// do stuff that adds and checks articles
}

最佳答案

写出来帮助我回答了我自己的问题。

main() 会读取环境变量,然后调用类似 doBackup(client_id, region) 的函数。我的测试将模拟端点,然后调用 doBackup(client_id, region)

关于rest - Golang HTTP REST 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com