for loop with describe,it 在使用 mocha 时出现奇怪的问题

for loop with describe,it when using mocha, weird problem occur

var Test1 = function (testcases) {

var testData = testcases
var testResult = false;
var startTime;
var endTime;
var day = currentDate();

describe(`Test Case: ${testData[0].testname}`, function () {
    this.timeout(40000);
    this.slow(100);
    console.log(testData.length);

    before(function* () {
        nightmare = Nightmare(testSetting.nightmare);
    });

    for (var i = 0; i < testData.length; i++) {
        console.log("At least we make it here,line27");
        it('Check page ' + testData[i].testname, function* () {
            console.log("At least we make it here,line29");
            startTime = currentTime();
            var folderNameforResult = `TestResultJSONs`;
            var folderNameforCaseByCase = `TestResultJSONs/${testData[i].testname}`;
            JSONFolderCreate(folderNameforResult);
            JSONFolderCreate(folderNameforCaseByCase);
            console.log("At least we make it here,line35");
            yield nightmare
                .goto(testData[i].loc)
                .wait(testData[i].SEL) // Coverage search box
                .then(() => {
                    console.log(testData[i].testname + ' Landing page is loaded.');
                    testResult = true;
                    endTime = currentTime();
                    console.log(startTime, endTime, day);
                    OutputJSON(testData[i].testname, testResult, startTime, endTime, testData[i].SEL, testData[i].loc, day);
                })
                .catch(error => {
                    console.log(testData[i].testname + ' Landing page fail.');
                    testResult = false;
                    endTime = currentTime();
                    mailFail(testData[i].testname, testData[i].loc);
                    console.log(startTime, endTime, day);
                    OutputJSON(testData[i].testname, testResult, startTime, endTime, testData[i].SEL, testData[i].loc, day);
                })
        });
    }
    after(function* () {
    yield nightmare.end();
    })
})

}

结果: 125 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,第 27 行 至少我们做到了,line27

测试用例:personal_home_tc_ 至少我们做到了,第 29 行 1) 检查页面 personal_home_tc_

0 次通过(29 毫秒) 1 失败

1) 测试用例:personal_home_tc_ 检查页面 personal_home_tc_: 类型错误:无法读取未定义的 属性 'testname' 在上下文中。 (test_template1.js:32:78) 在 Generator.next () 在 onFulfilled (node_modules\co\index.js:65:19) 在 C:\Users\robert.lui\Documents\nightmare\node_modules\co\index.js:54:5 在新的承诺 () 在 co (node_modules\co\index.js:50:10) 在 Context.args.(匿名函数) (node_modules\mocha-generators\index.js:25:6)

好像for循环运行 line27先循环了125次然后干脆跳过了it()里面最重要的内容。怎么才能正常运行,也就是运行第27行,然后到then或者then得到结果,再回到第27行125次?

其实并不奇怪。 Jest 运行s 异步测试。因此,当您调用 it('...', () => { ... }) 时,它不会 运行 它,而只是安排。由于您使用 var 来定义变量,因此在执行测试时具有相同的值。在这种情况下使用 it.each(),或者至少您应该在循环中切换到 let