摩卡异步挂钩没有运行?

时间:2018-05-29 18:52:34

标签: javascript node.js async-await mocha puppeteer

我总是在这个结构中得到未定义的页面。似乎mocha的钩子都没有运行。我尝试将async添加到顶级描述中,我尝试添加完成语句。我甚至尝试使用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
        }
    })
})

1 个答案:

答案 0 :(得分:0)

感谢@Akshendra Pratap,这个要点表明了为什么之前失败了。我所做的是创建一个顶级功能:

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

然后在第一个描述的beforeEach()中调用它。这解决了它,非常奇怪的设计,摩卡会在之前调用上部然后降低,然后在每个之前调用上部...