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
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)
Komentar yang paling membantu
Gunakan fungsi mengejek
jest.fn()
: