for循环,使用mocha时会发生奇怪的问题

问题描述 投票:0回答:1
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行至少我们在这里做到了,第27行

测试用例:personal_home_tc_至少我们在这里取得成功,第29行1)检查页面personal_home_tc _

0通过(29ms)1个失败

1)测试用例:personal_home_tc_检查页面personal_home_tc_:TypeError:无法读取未定义的属性“ 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在新的Promise()在co(node_modules \ co \ index.js:50:10)在Context.args。(匿名函数)(node_modules \ mocha-generators \ index.js:25:6)

似乎像for循环先运行line27 125次,然后仅跳过it()中的所有内容,这是最重要的部分。如何使它正常运行,即运行第27行,然后到达then或然后获得结果,然后返回第27行125次?

javascript node.js mocha nightmare
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.