javascript函数无法识别为javascript代码

时间:2019-07-08 10:36:50

标签: karate

我有以下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函数或功能文件”

有人知道问题出在哪里吗?可以做我想做的事吗?

谢谢

1 个答案:

答案 0 :(得分:0)

是的,从Karate 0.9.3开始,我们将JS函数嵌套限制为仅顶层。您可以在this comment中找到完整的说明。

因此,如果您需要JS函数“名称间隔”,则可以按照文档轻松实现:https://github.com/intuit/karate#multiple-functions-in-one-file

如果您需要更复杂的嵌套,请改用Java代码,您可以在任何级别嵌套函数。