javascript - 对于异步测试和 Hook ,请确保调用 "done()";如果返回 Promise,请确保它解析 puppeteer 和 mocha

标签 javascript unit-testing mocha.js chai puppeteer

我正在尝试使用 mocha 和 google puppeteer 测试我的组件。在我的单元测试文件中,我在函数之前启动 puppeteer 浏览器,并在函数之后关闭浏览器。当我运行测试文件时,出现以下错误 “Before All” Hook 错误:超时超过 2000 毫秒。对于异步测试和 Hook ,确保调用“done()”;如果返回 Promise,请确保它能够解决。

const puppeteer = require('puppeteer');
const { expect } = require('chai');
const _ = require('lodash');

/* create the global variable by using lodash function */
const globalVariables = _.pick(global, ['browser', 'expect']);

/* configurable options or object for puppeteer */
const opts = {
    headless: false,
    slowMo: 100,
    timeout: 0,
    args: ['--start-maximized', '--window-size=1920,1040'] 
}

/* call the before for puppeteer for execute this code before start testing */
before (async () => {
  global.expect = expect;
  global.browser = await puppeteer.launch(opts);
});

/* call the function after puppeteer done testing */
after ( () => {
  browser.close();
  global.browser = globalVariables.browser;
  global.expect = globalVariables.expect;
});

最佳答案

在保存测试文件的单元测试用例的根目录中,添加一个 mocha.opts 文件,并添加 --timeout 50000 这将设置mocha 在 50000 毫秒后超时。

现在应用了默认超时,并且由于测试操作尚未完成,因此您会收到此错误。

关于javascript - 对于异步测试和 Hook ,请确保调用 "done()";如果返回 Promise,请确保它解析 puppeteer 和 mocha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058558/

相关文章:

javascript - 模拟点击文档 ReactJS/JSDom

javascript - typeahead.js:在空查询时返回所有 Bloodhound 记录

java - when() 需要一个必须为 'a method call on a mock' 的参数

python - 皮查姆 : Cant run unit tests with command line arguments

node.js - 在每个源文件更改时自动运行 Mocha 测试

javascript - 在用户选择中插入自定义标签

c# - Moq >= 4.5.7 在 It.IsAny<decimal>() 上公开异常

reactjs - enzyme /Mocha : How to test a react component function by firing an onChange event from a child component

javascript - 使用flowtype静态检查mocha测试代码

javascript - 我如何根据 React 中的 javascript 对象渲染组件 X 次?