¿Desea solicitar una característica o informar un error ?
rasgo
¿Cuál es el comportamiento actual?
Debido a BufferedConsole
, es imposible sobrescribir console.error
, console.log
, console.warn
y console.info
.
Caso de uso: Nos gustaría poder tener console.error
y console.warn
que arrojan errores y fallan en las pruebas.
Si el comportamiento actual es un error, proporcione los pasos para reproducir y una demostración de repl.it a través de https://repl.it/languages/jest o un repositorio mínimo en GitHub que podemos yarn install
y yarn test
.
¿Cuál es el comportamiento esperado?
Espero que si agrego console.error = (message) => { throw new Error(message); };
(globalmente, en una prueba, o en setupFiles/setupFramework), cada vez que se llame a console.error
en una prueba, arrojará un error y fallará una prueba.
En realidad, no pasa nada.
Proporcione su configuración exacta de Jest y mencione su Jest, nodo, versión de yarn/npm y sistema operativo.
N / A
Use la función de burla jest.fn()
:
console.warn = jest.fn(warn => {
throw new Error(warn);
});
@thymikee Esto tampoco funciona como se esperaba, usando un archivo de configuración global:
en "setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"
beforeEach(() => {
console.error = jest.fn((error) => {
throw new Error(error);
});
});
En prueba:
const somePromiseThatLogsConsoleError = () => {
return new Promise((resolve, reject) => {
console.error('foobar');
resolve();
});
});
it('test that has console.error', () => {
return somePromiseThatLogsConsoleError().then(() => {
expect(false).toBeTrue();
});
});
Simplemente probé y funcionó:
// test file
test('lol', () => {
return new Promise((resolve) => {
console.log('lol');
resolve();
});
});
// setup file
global.console.log = () => {
throw new Error('hey!');
};
resultado:
__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)
Comentario más útil
Use la función de burla
jest.fn()
: