首页 > 解决方案 > Nightwatch First Test 在 `before` 钩子完成之前运行

问题描述

测试不会等待 before 钩子完成。它立即运行。为什么测试不等到 before 钩子完成后才运行?我创建了显示问题的示例测试。

module.exports = {
    "before": async browser => {
        console.log("before start");
        console.log("before start");
        console.log("before start");
        await new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log("before wait");
                console.log("before wait");
                console.log("before wait");
                resolve()
            }, 5000)
        });
        console.log("after wait");
        console.log("after wait");
        console.log("after wait");
        await browser.pause(5000);
        console.log("after pause");
        console.log("after pause");
        console.log("after pause");
    },
    'step 1': async browser => {
        console.log("step one");
        console.log("step one");
        console.log("step one");
        await browser.pause(5000);
        console.log("step one after pause");
        console.log("step one after pause");
        console.log("step one after pause");
    }
};

before start
before start
before start
⠋ Running step 1:
step one
step one
⠋ Running step 1:
before wait
before wait
before wait
after wait
after wait
after wait
step one after pause
step one after pause
⠋ Running step 1:
after pause
after pause
⚠ Running step 1:

No assertions ran.

当我将之前的钩子更改为before-tests它按预期工作时。

⠋ Running before-tests:
before start
before start
⠋ Running before-tests:
before wait
before wait
before wait
after wait
after wait
⠋ Running before-tests:
after pause
after pause
⚠ Running before-tests:

No assertions ran.

⠋ Running step 1:
step one
step one
⠋ Running step 1:
step one after pause
step one after pause
⚠ Running step 1:

No assertions ran.


OK. 2 tests passed (16.587s)

标签: nightwatch.js

解决方案


推荐阅读