问题描述
我不知道为什么我的第二个console.log()
没有将任何内容记录到控制台...
describe('Puppeteer', () => {
it('Does not log', () => {
(async () => {
console.log('This logs'); // <- works
const browser = await puppeteer.launch({
headless: true,
args: [
'--incognito'
]
});
await console.log('This does not log'); // <- Does not work
console.log('This does not log too'); // <- This neither
const page = await browser.newPage();
await page.goto('....');
....
expect(a < b)
.toEqual(true);
browser.close();
})();
});
});
有什么原因为什么不记录?
1楼
解决方案:这不起作用,因为您正在立即运行该块。 确保传递不是自我执行的功能。
自我执行功能的一个示例是(()=>{})()
。
这会阻止测试正确解析。
这是清理后的代码:
const puppeteer = require('puppeteer');
const assert = require('assert');
describe('Puppeteer', () => {
it('Does log', async () => { // <== PASS THE FUNCTION HERE
const browser = await puppeteer.launch({args: ['--incognito']});
console.log('This logs now');
const page = await browser.newPage();
await page.goto('https://example.org');
const title = await page.title();
assert.equal(title, 'Example Domain');
console.log('This logs too');
await browser.close();
})
});
结果:
这个问题是jest
而不是mocha
。
这是jest
和结果的代码。
除了下一行,几乎是一样的,
// assert.equal(title, 'Example Domain');
expect(title).toEqual('Example Domain');
结果:
(可选)如果要将日志堆叠在一起,可以在运行jest
时传递--verbose=false
。