3

我有一个要调用的 javascript 文件。内容如下。当我尝试调用该文件时,即使明确定义了一个变量,我也会不断收到“没有找到名称的变量:响应”。该文件使用节点在命令行中执行良好,因此 javascript 函数有效。有什么想法吗?我在屏幕截图中附加了错误消息。

下面片段中的 Javascript 内容。

空手道脚本:

场景:调用 JavaScript:

    * def sample = read('classpath:reusable/gen-data.js')

    * print someValue

function createTestData(sampleJson, fieldsToChange, numRecords) {
    var testData = [];

    for (var i = 0; i < numRecords; i++) {
        var copy = JSON.parse(JSON.stringify(sampleJson));

        fieldsToChange.forEach(function(fieldToChange) {
            copy[fieldToChange] = copy[fieldToChange] + i;
        });

        testData.push(copy);
    }



    return {content: testData};
}

var testData = {

  "country": "US",
  "taskStatusCode" : "Closed",
  "facilityCode" : "US_203532",

};

function getTestData() {

  String testData = JSON.stringify(createTestData(testData, ["taskStatusCode", "facilityCode"], 1), null, 1);

  console.log("all done getTestData()");
  console.log("test data: \n" + testData);

  return testData;
};


console.log("calling getTestData()");
getTestData();

在此处输入图像描述

4

2 回答 2

4

我认为当 JavaScript 不正确时会引发此错误。例如在我的例子中这个 JS 文件:

/* Set the custom authentication header */
function fn() {
    var authToken = karate.get('authToken');
    var out = {};
    out['Auth-Token'] = authToken
    return out;
}

该文件将产生“没有找到名称的变量:响应”。

原因是“右侧(或 *.js 文件的内容,如果适用)应该以 function 关键字开头。” 根据空手道文档(链接)。

现在通过移动注释并使函数关键字成为文本的第一位,它可以按预期工作:

function fn() {
/* Set the custom authentication header */
    var authToken = karate.get('authToken');
    var out = {};
    out['Auth-Token'] = authToken
    return out;
}

在 OP 中,function 关键字是文件中的第一件事,但是在原始函数之外还有 javascript——我认为这对于空手道语法是不合法的。换句话说,一切都必须在外部函数中。

于 2019-08-09T19:20:10.877 回答
0

我的解决方法是使用 java 而不是 JavaScript。

于 2019-02-02T11:48:56.627 回答