javascript - 摩卡异步钩子没有运行?
问题描述
我总是在这个结构中得到未定义的页面。似乎 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
}
})
})
解决方案
感谢@Akshendra Pratap,该要点说明了之前失败的原因。我所做的是创建一个顶级函数:
async function genHTML(page) {
return await page.$(...)
}
然后在第一个 describe's 中调用它beforeEach()
。这解决了它,非常奇怪的设计,摩卡会先调用鞋面然后再调用之前的下,然后调用鞋面 beforeEach ......
推荐阅读
- sql - Oracle SQL 创建表以满足需求
- git - 如何缩进 git show 命令的文本差异输出
- php - 确定循环中为空的行文件
- xamarin.forms - 你如何获得 xamarin 形式的平台版本
- rust - 这个“As lifts over &” AsRef impl 是什么意思?
- flutter - 为什么我的自定义颤振脚手架会阻止状态刷新?
- css - 仅使用 css 在文本中设置位置波斯字母
- python - python else部分if运行多次,如何解决
- javascript - 如何从css文件中删除css注释
- javascript - 使用 React history.push() 重定向不反映输入