我有以下javascript文件MyService.js:
function(config) {
config.MyService = function(request) {
return call('classpath:path/to/my.feature@tag', request);
};
return config;
}
我从karate-config.js加载此js,以便从我的功能文件中重新使用它。
config = karate.callSingle('classpath:path/to/MyService.js', config);
它按预期工作,我可以从任何功能文件中调用my.feature。例如:
Given def res = call MyService myRequest
当我尝试向MyService.js函数添加新级别时出现问题:
function(config) {
config.ApiOauthService = {
myCall : function(request) {
return call('classpath:path/to/my.feature@tag', request);
}
};
return config;
}
将以下代码添加到功能文件时:
Given def myCall = call MyService.myCall myRequest
我收到以下错误:“不是js函数或功能文件”
有人知道问题出在哪里吗?可以做我想做的事吗?
谢谢
答案 0 :(得分:0)
是的,从Karate 0.9.3开始,我们将JS函数嵌套限制为仅顶层。您可以在this comment中找到完整的说明。
因此,如果您需要JS函数“名称间隔”,则可以按照文档轻松实现:https://github.com/intuit/karate#multiple-functions-in-one-file
如果您需要更复杂的嵌套,请改用Java代码,您可以在任何级别嵌套函数。