我正在使用mocha和puppeteer来测试页面。如果页面抛出未捕获的异常,我希望测试失败。
这是我到目前为止所尝试的:
it('should fail because page has an error', async () => {
const browser = await puppeteer.launch({});
const page = await browser.newPage();
page.on('pageerror', (e) => {
// TODO: Make the test fail somehow
throw e;
});
await page.goto('http://example.com/page-that-throws-an-error');
});
当我运行mocha
时,此测试会成功,但在我的终端中留下UnhandledPromiseRejectionWarning
。
我不认为我可以使用done(error)
回调,因为我已经在使用异步功能,而mocha会抱怨Error: Resolution method is overspecified
。
答案 0 :(得分:1)
我意识到我可以跟踪页面抛出的错误,然后在测试结束时检查页面是否抛出任何错误。
it('should fail because page has an error', async () => {
const browser = await puppeteer.launch({});
const page = await browser.newPage();
const pageErrors = [];
page.on('pageerror', (e) => {
pageErrors.push(e);
});
await page.goto('http://example.com/page-that-throws-an-error');
for (const e of pageErrors) {
throw e;
}
});
这样可行,但测试只有在检查没有错误时才会失败。理想情况下,我希望找到一种方法,一旦页面抛出错误,测试就会失败。