Javascript 摩卡异步挂钩没有运行?

Javascript 摩卡异步挂钩没有运行?,javascript,node.js,async-await,mocha.js,puppeteer,Javascript,Node.js,Async Await,Mocha.js,Puppeteer,我总是在这个结构中得到未定义的页面。看起来摩卡的钩子都没动。我尝试将async添加到顶级描述,我尝试添加done语句。我甚至试过使用Promise.then.catch。都没有运气 const should = require('chai').should() const puppeteer = require('puppeteer') const puppeteerConfig = { headless: true, args: ['--no-sandbox', '--dis

我总是在这个结构中得到未定义的页面。看起来摩卡的钩子都没动。我尝试将
async
添加到顶级描述,我尝试添加done语句。我甚至试过使用
Promise.then.catch
。都没有运气

const should = require('chai').should()
const puppeteer = require('puppeteer')

const puppeteerConfig = {
    headless: true,
    args: ['--no-sandbox', '--disable-translate', '--disable-extensions', '--disable-sync']
}

var browser
var page

describe('...', function() {

    before(async function() {
        browser = await puppeteer.launch(puppeteerConfig)
    })

    after(async function() {
        await browser.close()
    })

    beforeEach(async function() {
        page = await browser.newPage()
    })

    afterEach(async function() {
        await page.close()
    })

    describe('...', async function() {
        before(async function() {
            console.log(page) // undefined
        }
    })
})

多亏了@Akshendra Pratap,这个要点说明了之前失败的原因。我所做的是创建一个顶级函数:

async function genHTML(page) {
    return await page.$(...)
}

然后在第一个descripe的
beforeach()中调用它。这就解决了这个问题,非常奇怪的设计,摩卡会先调用上层然后再调用下层,在每次调用上层之前…

您正在
描述
中编写控制台,尝试在
中写入它
。我忘记了
在第二个描述中,它做了一些工作,然后运行一些
it
语句。遗憾的是,执行顺序是这样的,我认为您可以使用selenium js,它有一些很好的异步Mocha示例/API。