Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 使用GAE测试时如何获取主机名?_Unit Testing_Google App Engine_Go - Fatal编程技术网

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

Unit testing 使用GAE测试时如何获取主机名?,unit-testing,google-app-engine,go,Unit Testing,Google App Engine,Go,使用本地开发服务器时,我的默认服务的端口始终默认为8080。但是,当我使用aetest时,端口号总是会更改。当单元测试指定--port=0时,用于启动本地服务器的命令。但是,由于这是在应用程序引擎包中,我不想修改它。我也无法手动指定端口号,因为测试是使用go test而不是dev_appserver.py运行的 我需要什么 我正在测试的代码需要来自不同微服务的特定响应才能继续成功执行。为了继续测试这个微服务,我正在尝试设置一个伪端点来提供我需要的响应 正在测试的代码示例 我需要测试当前服务的主机

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

我需要什么

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

正在测试的代码示例

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

我尝试过的

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


在GAE中运行单元测试时,有没有办法获得本地开发服务器的主机?或者,有没有一种方法可以指定应用程序引擎测试的端口号?

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

代码示例如下所示:

    ml, - := module.List(ctx)
    mv, _ := module.DefaultVersion(ctx, ml[0])
    hn, _ := appengine.ModuleHostname(ctx, ml[0], mv, "")
感谢您为我指明了正确的方向。

Try,这似乎相当于python的
模块。get_hostname()
,如中所述
    ml, - := module.List(ctx)
    mv, _ := module.DefaultVersion(ctx, ml[0])
    hn, _ := appengine.ModuleHostname(ctx, ml[0], mv, "")