Jest: Izinkan console.error/warn/log ditimpa dalam pengujian

Dibuat pada 31 Mar 2017  ·  3Komentar  ·  Sumber: facebook/jest


Apakah Anda ingin meminta fitur atau melaporkan bug ?
fitur

Apa perilaku saat ini?
Karena BufferedConsole , tidak mungkin untuk menimpa console.error , console.log , console.warn dan console.info .

Use Case: Kami ingin memiliki console.error dan console.warn throw error dan gagal tes.

Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi dan demo repl.it melalui https://repl.it/languages/jest atau repositori minimal di GitHub yang kami dapat yarn install dan yarn test .

Apa perilaku yang diharapkan?
Saya berharap jika saya menambahkan console.error = (message) => { throw new Error(message); }; (secara global, dalam pengujian, atau dalam setupFiles/setupFramework), setiap kali console.error dipanggil dalam pengujian, itu akan menimbulkan kesalahan dan gagal dalam pengujian.

Pada kenyataannya, tidak ada yang terjadi.

Harap berikan konfigurasi Jest Anda yang tepat dan sebutkan Jest, node, versi yarn/npm dan sistem operasi Anda.

T/A

Komentar yang paling membantu

Gunakan fungsi mengejek jest.fn() :

console.warn = jest.fn(warn => {
  throw new Error(warn);
});

Semua 3 komentar

Gunakan fungsi mengejek jest.fn() :

console.warn = jest.fn(warn => {
  throw new Error(warn);
});

@thymikee Ini juga tidak berfungsi seperti yang diharapkan, menggunakan file pengaturan global:

di "setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"

beforeEach(() => {
  console.error = jest.fn((error) => {
    throw new Error(error);
  });
});

Dalam tes:

const somePromiseThatLogsConsoleError = () => {
  return new Promise((resolve, reject) => {
    console.error('foobar');
    resolve();
  });
});

it('test that has console.error', () => {
  return somePromiseThatLogsConsoleError().then(() => {
    expect(false).toBeTrue();
  });
});

saya baru saja mencobanya dan berhasil:

// test file
test('lol', () => {
  return new Promise((resolve) => {
    console.log('lol');
    resolve();
  });
});
// setup file
global.console.log = () => {
  throw new Error('hey!');
};

hasil:

 __tests__/test-test.js
  ✕ lol (3ms)

  ● lol

    hey!

      at CustomConsole.Object.<anonymous>.global.console.log (setup.js:2:9)
      at resolve (__tests__/test-test.js:3:13)
      at Object.<anonymous>.test (__tests__/test-test.js:2:10)
      at process._tickCallback (internal/process/next_tick.js:109:7)

Test Summary
 › Ran all tests.
 › 1 test failed, 0 tests passed (1 total in 1 test suite, run time 0.661s)
Apakah halaman ini membantu?
0 / 5 - 0 peringkat