Как войти в асинхронный / ожидающий контекст - PullRequest
0 голосов
/ 04 марта 2019

Интересно, почему мой второй 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 Ответ

0 голосов
/ 04 марта 2019

Решение: Это не работает, потому что вы запускаете блок мгновенно.Обязательно передайте функцию, которая не выполняется самостоятельно.

Примером функции, выполняемой автоматически: (()=>{})().Это препятствует правильному разрешению теста.

Вот очищенный код:

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

Результат:

enter image description here

Вопрос имеет jest вместо mocha.Вот код для jest и результат.Это почти то же самое, за исключением следующей строки:

// assert.equal(title, 'Example Domain');
expect(title).toEqual('Example Domain');

Результат:

enter image description here

Опционально, если вы хотите объединить журналы вместе,Вы можете передать --verbose=false при запуске jest.

enter image description here

...