gpt4 book ai didi

unit-testing - 使用GAE测试时如何获取主机名?

转载 作者:IT王子 更新时间:2023-10-29 02:09:33 26 4
gpt4 key购买 nike

当使用本地开发服务器时,我的默认服务端口始终默认为 8080。但是,当我使用 aetest 时,端口号总是会发生变化。单元测试时用于启动本地服务器的命令指定--port=0。但是,由于这是在应用引擎包中,我不想修改它。我也无法手动指定端口号,因为测试是使用 go test 而不是 dev_appserver.py 运行的。

我需要什么

我正在测试的代码需要来自不同微服务的特定响应才能继续成功执行。为了继续测试这个微服务,我试图设置一个虚假端点来为我提供我需要的响应。

正在测试的代码示例

func Sample(c *gin.Context) {
...
url := os.Getenv("some_service") + "/some-endpoint"
req, err := http.NewRequest("POST", url, r.Body)
if err != nil {
// error handling
}
...
}

我需要当前正在测试的服务的主机能够为其交互的另一个微服务设置虚拟环境变量。 host url应该是当前正在测试的服务的url。这样我就可以使用工厂响应,因为我没有在这组测试中测试其他服务。

我尝试过的

  • 使用 appengine.DefaultVersionHostname(),但这会返回一个空字符串
  • 使用我创建的 http 请求从中获取 url,但它不包含所需的主机(仅包含路径)

问题

在GAE中运行单元测试时,有没有办法获取本地开发服务器的主机?或者,有没有办法为应用引擎测试指定端口号?

最佳答案

我能够通过首先获取模块列表来实现我的目标。 (可能您要查找的服务名称将是 default,但我还是选择使用列表中的第一个名称)。使用模块名称,我得到了模块的默认版本。使用这两个(和一个空的实例名称),我能够获得提供我正在寻找的值的模块主机名。

代码示例如下所示:

    ml, - := module.List(ctx)
mv, _ := module.DefaultVersion(ctx, ml[0])
hn, _ := appengine.ModuleHostname(ctx, ml[0], mv, "")

感谢Dan为我指明了正确的方向。

关于unit-testing - 使用GAE测试时如何获取主机名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51368456/

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