当前位置: 代码迷 >> JavaScript >> 如何登录异步/等待上下文
  详细解决方案

如何登录异步/等待上下文

热度:43   发布时间:2023-06-07 13:50:31.0

我不知道为什么我的第二个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();
    })();
  });
});  

有什么原因为什么不记录?

解决方案:这不起作用,因为您正在立即运行该块。 确保传递不是自我执行的功能。

自我执行功能的一个示例是(()=>{})() 这会阻止测试正确解析。

这是清理后的代码:

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

  相关解决方案