Estoy tratando de suprimir un error específico en nuestras pruebas de Jest, ya que tenemos planes para resolverlo más adelante, pero hasta entonces no queremos que estos errores puedan ocultar ningún error verdadero.
Los errores ocurren en el código base, por lo que mi estrategia actual es volver a cablear la función console.error en nuestro archivo de configuración de jest.
He realizado dos intentos diferentes, pero ambos casi funcionan ahora, cuando informan un error verdadero: están agregando una nueva línea en el seguimiento del error.
Intento 1:
const originalError = console.error.bind(console.error); jest.spyOn(global.console, 'error').mockImplementation((message) => { if ( !message .toString() .includes( 'Warning: An update to SettingsPanel inside a test was not wrapped in act' ) ) { originalError(message); } });Intento 2:
const { error } = console; global.console = { ...console, error: (errorMessage) => !errorMessage .toString() .includes( 'Warning: An update to SettingsPanel inside a test was not wrapped in act' ) && error(errorMessage), };Ambos registrarán un error válido, es decir, 'Advertencia: cada niño en una lista debe tener una "clave" única'. Sin embargo , en lugar de señalarme el código con el problema, me remite aquí.
console.error Warning: Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/docs/lists-and-keys.html#keys for more information.%s 18 | .includes( 19 | 'Warning: An update to SettingsPanel inside a test was not wrapped in act' > 20 | ) && error(errorMessage), | ^ 21 | }; at Object.error (jest.setup.js:20:12) at printWarning (node_modules/react/cjs/react.development.js:315:30) at error (node_modules/react/cjs/react.development.js:287:5) at validateExplicitKey (node_modules/react/cjs/react.development.js:1630:5) at validateChildKeys (node_modules/react/cjs/react.development.js:1656:9) at Object.createElementWithValidation [as createElement] (node_modules/react/cjs/react.development.js:1806:7) at src/js/components/SettingsPanel/DataListAutocompleter/DataListAutocompleter.tsx:85:13He buscado y buscado y todo lo que puedo encontrar son preguntas sobre silenciar todos los errores o silenciar una prueba específica; nada de lo que he encontrado me ha ayudado a resolver esto.