JavaScript循环数组-ReferenceError |我没有定义

时间:2018-11-17 14:29:00

标签: javascript arrays for-loop automated-tests postman

JavaScript和Postman的新手。

我已经使用JS在邮递员中建立了一个基本测试,以将Web响应中的名称与数据文件中的名称进行比较。名称数组位于外部数据csv文件中。

我想遍历数组,但出现错误:

"ReferenceError | i is not defined"

代码:

var newResponse = responseBody;

let nameArray = data.name;

for (let i = 0; i < nameArray.length; i++) {
  console.log(nameArray.length);
}

pm.test("Web vs. Data: Person", function() {
  pm.expect(newResponse.Item[i].name).to.equal(nameArray.Item[i].person);
});

console.log(newResponse.Item[i].name);
console.log(nameArray.Item[i].person);

2 个答案:

答案 0 :(得分:0)

let是块作用域的,因此将导致 ReferenceError for循环。变量i将不会在for循环之外被引用。因此,您必须将代码块移入for循环内,如下所示。希望这会有所帮助:)

var newResponse = responseBody;
let nameArray = data.name;

for(let i = 0; i < nameArray.length; i++){
  console.log(nameArray.length);
  pm.test("Web vs. Data: Person" ,function(){
  pm.expect(newResponse.Item[i].name).to.equal(nameArray.Item[i].person);
  });

  console.log (newResponse.Item[i].name);
  console.log(nameArray.Item[i].person); 
}

答案 1 :(得分:0)

缺少最终范围“}”字符,请更改此代码;

var newResponse = responseBody;

let nameArray = data.name;

for (let i = 0; i < nameArray.length; i++) {

    console.log(nameArray.length);

    pm.test("Web vs. Data: Person", function () {
        pm.expect(newResponse.Item[i].name).to.equal(nameArray.Item[i].person);

    });

    console.log(newResponse.Item[i].name);
    console.log(nameArray.Item[i].person);
}