Me pregunto si hay una mejor manera de deshabilitar los errores de la consola dentro de una prueba de Jest específica (es decir, restaurar la consola original antes o después de cada prueba).
Aquí está mi enfoque actual:
describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses console error expect(someFunction).toBe("X"); expect(consoleSpy).toHaveBeenCalled(); }); test("Test that has console available", () => { // shows up during jest watch test, just as intended console.error("test"); }); }); ¿Hay una forma más limpia de lograr lo mismo? Me gustaría evitar spyOn , pero parece que mockRestore solo funciona con él .
¡Gracias!
Para un archivo de especificaciones en particular, el de Andreas es lo suficientemente bueno. La configuración a continuación suprimirá las declaraciones de console.log para todos los conjuntos de pruebas,
jest --silent(o)
Para personalizar warn, info and debug , puede usar la siguiente configuración
tests /setup.js o jest-preload.js configurados en setupFilesAfterEnv
global.console = { ...console, // uncomment to ignore a specific log level log: jest.fn(), debug: jest.fn(), info: jest.fn(), // warn: jest.fn(), // error: jest.fn(), };jest.config.js
module.exports = { verbose: true, setupFilesAfterEnv: ["<rootDir>/__tests__/setup.js"], };Si quieres hacerlo solo para una prueba específica:
beforeEach(() => { jest.spyOn(console, 'warn').mockImplementation(() => {}); });Como cada archivo de prueba se ejecuta en su propio subproceso, no es necesario restaurarlo si desea deshabilitarlo para todas las pruebas en un solo archivo. Por la misma razón, también puedes simplemente escribir
console.log = jest.fn() expect(console.log).toHaveBeenCalled();