我在文档中看到,可以在后台定义一个函数,并在每种情况下执行它。 参见:https://github.com/intuit/karate/blob/master/karate-demo/src/test/java/demo/hooks/hooks.feature
但是我需要将args发送到此函数,并且找不到任何解决方案...
在文档中:
* configure afterScenario =
"""
function(){
var info = karate.info;
karate.log('after', info.scenarioType + ':', info.scenarioName);
karate.call('after-scenario.feature', { caller: info.featureFileName });
}
"""
我想做什么:
utils / js / afterFunc.js:
function fn(args){
karate.log('after', args.msg);
}
myTest.feature:
* configure afterScenario = read('classpath:utils/js/afterFunc.js') {msg: 'Hello !'}
答案 0 :(得分:2)
read
函数将读取afterFunc.js
文件,但忽略{msg: 'Hello !'}
参数。
Scripts can call other scripts,但您不想立即调用脚本,是吗?
您要创建一个函数引用,并将该引用分配给afterScenario
配置。
但这还不够。您想使用该函数-what is currying?
AFAIK read
不直接支持此功能。
有一种解决方法。
您可以阅读JavaScript文件并创建一个函数,该函数使用您选择的参数调用after-scenario-function
。
Background:
* def fn = read('classpath:after-scenario-with-params.js')
* configure afterScenario =
"""
function() {
fn(karate.info, 'hello world');
}
"""
after-scenario-with-params.js
包含以下js函数:
function fn(info, someParameter) {
karate.log('called after scenario:', info.scenarioName);
karate.log('some parameter: ' + someParameter);
}
就是这样。
我向空手道沙箱存储库提交了 complete running example。回购基于gradle和groovy。希望对您有所帮助。