update test react reactjs babel jestjs

reactjs - test - SyntaxError con Jest y React e importación de archivos CSS



snapshot testing react (2)

moduleNameMapper es la configuración que le dice a Jest cómo interpretar archivos con una extensión diferente. Necesitas decirle cómo manejar los archivos de Less.

Cree un archivo como este en su proyecto (puede usar un nombre o ruta diferente si lo desea):

config/CSSStub.js

module.exports = {};

Este código auxiliar es el módulo que le diremos a Jest que use en lugar de los archivos CSS o Less. Luego, cambie la configuración de moduleNameMapper y agregue esta línea a su objeto para usarla:

''^.+//.(css|less)$'': ''<rootDir>/config/CSSStub.js''

Ahora Jest tratará cualquier archivo CSS o Menos como un módulo que exporta un objeto vacío. También puede hacer otra cosa, por ejemplo, si usa módulos CSS, puede usar un proxy para que cada importación devuelva el nombre de la propiedad importada.

Lea más en esta guía: https://facebook.github.io/jest/docs/en/webpack.html

Estoy intentando que mi primera prueba de jest pase con React y Babel.

Estoy teniendo el siguiente error:

SyntaxError: /Users/manueldupont/test/avid-sibelius-publishing-viewer/src/components/TransportButton/TransportButton.

> 7 | @import ''../variables.css''; | ^

Mi configuración package.json para jest se parece a esto:

"babel": { "presets": [ "es2015", "react" ], "plugins": [ "syntax-class-properties", "transform-class-properties" ] }, "jest": { "moduleNameMapper": { "^image![a-zA-Z0-9$_-]+$": "GlobalImageStub", "^[./a-zA-Z0-9$_-]+//.png$": "RelativeImageStub" }, "testPathIgnorePatterns": [ "/node_modules/" ], "collectCoverage": true, "verbose": true, "modulePathIgnorePatterns": [ "rpmbuild" ], "unmockedModulePathPatterns": [ "<rootDir>/node_modules/react/", "<rootDir>/node_modules/react-dom/", "<rootDir>/node_modules/react-addons-test-utils/", "<rootDir>/node_modules/fbjs", "<rootDir>/node_modules/core-js" ] },

Entonces, ¿qué me estoy perdiendo?


moduleNameMapper esto usando la clave moduleNameMapper en las configuraciones de jest en el archivo package.json

{ "jest":{ "moduleNameMapper":{ "//.(css|less|sass|scss)$": "<rootDir>/__mocks__/styleMock.js", "//.(gif|ttf|eot|svg)$": "<rootDir>/__mocks__/fileMock.js" } } }

Después de esto, deberá crear los dos archivos como se describe a continuación.

  • __mocks__/styleMock.js

    module.exports = {};

  • __mocks__/fileMock.js

    module.exports = ''test-file-stub'';

Si está utilizando módulos CSS, entonces es mejor simular un proxy para habilitar las búsquedas de className. Por lo tanto sus configuraciones cambiarán a:

{ "jest":{ "moduleNameMapper": { "//.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js", "//.(css|less|scss|sass)$": "identity-obj-proxy" }, } }

Pero necesitará instalar el paquete identity-obj-proxy como una dependencia de desarrollo, es decir,

yarn add identity-obj-proxy -D

Para más información. Puedes consultar los https://facebook.github.io/jest/docs/en/webpack.html