对于异步测试和挂钩,请确保调用了“ done()”;如果返回了Promise,请确保它能解决木偶和摩卡

时间:2019-03-08 07:26:17

标签: javascript unit-testing mocha chai puppeteer

我正在尝试使用mocha和google puppeteer来测试我的组件。在我的单元测试文件中,我将在之前的版本中启动操纵符浏览器,并在之后的功能中关闭该浏览器。当我运行测试文件时,出现以下错误 “之前”钩子 错误:超时超过2000毫秒。对于异步测试和挂钩,请确保调用了“ done()”;如果返回承诺,请确保其解决。

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;
});

1 个答案:

答案 0 :(得分:1)

在单元测试用例的根目录中(保留测试文件),添加一个mocha.opts文件,然后添加--timeout 50000,这会将mocha设置为50000 ms后超时。

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