使用不同端口的空手道功能
Karate feature using different ports
我有多个场景相互构建的功能。将其视为第一个请求获取一些数据,然后将这些数据泵入第二个请求,依此类推。
这工作正常,只要所有请求都发送到同一主机。然而,该行中的最后一个请求转到同一主机上的不同端口,但是从 Karate
调用的端口当然是错误的。
这里是 karate-config.js
:
function fn() {
karate.configure('connectTimeout', 10000);
karate.configure('readTimeout', 10000);
return {
tenant: 'ipt',
bank: 'ndb',
baseUrl: karate.properties['mws.baseUrl'] ? karate.properties['mws.baseUrl'] : 'http://localhost:8080',
errorIdentifierMatches: function (actualErrorIdentifier, expectedErrorIdentifier) {
return actualErrorIdentifier.startsWith(expectedErrorIdentifier);
},
sleep: function (millis) {
karate.log('Sleeping for ' + millis + ' ms');
java.lang.Thread.sleep(millis)
},
generateUUID: function() {
return java.util.UUID.randomUUID() + '';
}
}
}
这导致最后一个调用转到 http://localhost:8080/ipt/registerkey
而它应该是 http://localhost:9390/ipt/registerkey
特征中的相关部分定义在Background
:
Background:
Given url baseUrl
* def s2wKeyExchangeEndpoint = ("/mws/v2/" + tenant + "/" + bank + "/s2w/startkeyexchange")
* def s2wVerifyAndSignEndpoint = ("/mws/v2/" + tenant + "/" + bank + "/s2w/verifyandsign")
* def s2wRegisterKey = ("/ipt/registerkey")
有没有办法在我的功能中更改 baseUrl?还有其他选择吗?
您可以随时在 Scenario
中使用 url
关键字。由您来管理变量和配置。
* url 'http://localhost:8080'
* path 'foo', 'bar'
* method get
* url baseUrl
* path 'blah'
* method get
所以我觉得你误解了语法或者把事情搞得太复杂了。
不确定您的应用程序堆栈,但是否可以单独测试每个调用(通过使用模拟)然后执行有限的集成端到端黑盒测试?
我有多个场景相互构建的功能。将其视为第一个请求获取一些数据,然后将这些数据泵入第二个请求,依此类推。
这工作正常,只要所有请求都发送到同一主机。然而,该行中的最后一个请求转到同一主机上的不同端口,但是从 Karate
调用的端口当然是错误的。
这里是 karate-config.js
:
function fn() {
karate.configure('connectTimeout', 10000);
karate.configure('readTimeout', 10000);
return {
tenant: 'ipt',
bank: 'ndb',
baseUrl: karate.properties['mws.baseUrl'] ? karate.properties['mws.baseUrl'] : 'http://localhost:8080',
errorIdentifierMatches: function (actualErrorIdentifier, expectedErrorIdentifier) {
return actualErrorIdentifier.startsWith(expectedErrorIdentifier);
},
sleep: function (millis) {
karate.log('Sleeping for ' + millis + ' ms');
java.lang.Thread.sleep(millis)
},
generateUUID: function() {
return java.util.UUID.randomUUID() + '';
}
}
}
这导致最后一个调用转到 http://localhost:8080/ipt/registerkey
而它应该是 http://localhost:9390/ipt/registerkey
特征中的相关部分定义在Background
:
Background:
Given url baseUrl
* def s2wKeyExchangeEndpoint = ("/mws/v2/" + tenant + "/" + bank + "/s2w/startkeyexchange")
* def s2wVerifyAndSignEndpoint = ("/mws/v2/" + tenant + "/" + bank + "/s2w/verifyandsign")
* def s2wRegisterKey = ("/ipt/registerkey")
有没有办法在我的功能中更改 baseUrl?还有其他选择吗?
您可以随时在 Scenario
中使用 url
关键字。由您来管理变量和配置。
* url 'http://localhost:8080'
* path 'foo', 'bar'
* method get
* url baseUrl
* path 'blah'
* method get
所以我觉得你误解了语法或者把事情搞得太复杂了。
不确定您的应用程序堆栈,但是否可以单独测试每个调用(通过使用模拟)然后执行有限的集成端到端黑盒测试?