我测试与斯波克一个春天启动应用程序,但对测试情况下,我需要模拟或存根我想重定向请求到虚拟服务器进行测试呼叫到认证服务器(使用OAuth 2),这样一个和使方法返回一个固定的令牌。但是,我覆盖在运行时的端口,但由于虚拟服务器是一个固定的端口(从application-test.yml
读)上我得到一个错误,有没有办法在运行时改变这个使服务器的随机端口的测试匹配上运行?这是我的setup
功能:
`def setup() {
omcService.soapClient = Stub(SOAPClient)
String url = "http://localhost:${port}"
nonRetryableExceptionProcessor.omsUrl = url
omsService.omsUrl = url
omsService.authUrl = "$url/oauth/token?scope=all"
omsService = Spy(OmsService)
producerTemplate.start()
}
当我调试这个测试,性质发生改变,但在应用程序执行GET操作,它指向总是localhost:4321
,这是不是随机端口拾起春天
你可以注入随机端口到您的测试。
例如使用@LocalManagementPort:
@LocalManagementPort
int port;
或者直接使用@Value:
@Value("${local.server.port}")
int port;
但是,如果上述方法无效,那么我相信这是你的最后一招:
int port = context.embeddedServletContainer.port
有它注入,就可以在该端口上的服务器进行GET。