![](/img/trans.png)
[英]Assertion error when testing async function with mocha and chaiAsPromised
[英]error with async function in 'before' - testing with mocha and puppeteer
我正在尝试在“之前”挂钩中启动铬浏览器。 运行代码时,我不断收到以下错误:
let browser;
describe('Login Tests', function(){
let page;
before(async ()=> {
let launchOptions = {
headless: false,
executablePath: '/Applications/Chromium.app/Contents/MacOS/Chromium',
args: ['--start-maximized']
};
browser = await puppeteer.launch(launchOptions);
page = await browser.newPage();
await page.goto('http://localhost:8080');
await page.waitForSelector('body div');
})
it('should bring up login modal when clicking Client Login', async function(){
await page.waitForSelector('.navbar-start a[href$="#/login"]');
await page.click('.navbar-start a[href$="#/login"]');
let url = await page.url()
assert.equal(url, 'http://localhost:8080/#/login');
})
//....
})
错误:超过 2000 毫秒的超时。 对于异步测试和钩子,确保调用了“done()”; 如果返回 Promise,请确保它已解决。
当我将回调传递给异步 function 并在完成后返回它时,我仍然收到以下错误。 我在 after 钩子中也遇到了同样的错误。
有人可以帮我解决这个问题,卡在这个问题上太久了:(
问题是 mocha 每个钩子和测试的默认超时时间为 2000 毫秒。 您似乎没有在任何地方覆盖默认值。
要覆盖它,您有几个选项,一个是将此选项添加到.mocharc.json
:
{
"timeout": 20000
}
这将为您提供 20 秒的“一切”超时 - 钩子、测试。
另一个如何设置不同超时的选项就在您的描述回调 function 中,通过调用timeout()
方法:
describe('...', function () {
this.timeout(20000);
before(...);
it(...);
});
这将再次为您提供 20 秒的超时。 这将影响 describe 块内的所有钩子和测试。 如果你想只为 before 钩子设置超时,你在 before 钩子中输入这个:
describe('...', function () {
before(function () {
this.timeout(20000);
});
it(...);
});
设置不同超时的另一种方法可能是:
it('...', function () {
// ...
}).timeout(20000);
这显然只会为这个测试设置一个超时。
如果我应该给出一个偏好,我会选择第一个选项,因为这是我期望的配置值。 钩子和测试是关于测试步骤的,而不是设置超时,所以我会避免在那里做。 如果我需要为一个特定的测试设置不同的超时时间,出于同样的可读性原因,我会选择我提到的最后一个选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.