Ahora estoy usando reaccionar JEST para probar el código. Si un componente es único y no importa nada más, la "prueba npm" se ejecuta sin problemas, y ahora, quiero probar varios componentes juntos, e inmediatamente recibí este error:
SyntaxError: Unexpected token .Parecía que cada vez que reaccionar estaba importando algo más, como este:
require( './style/fixed-data-table.css' ); require( './style/jnpr-datatable.scss' );y luego usar broma es lanzar el token inesperado "." error.
Debe haber algo mal en mi configuración, pero ¿dónde? Mi paquete.json contiene:
"jest": { "unmockedModulePathPatterns": [ "<rootDir>/node_modules/react/", "<rootDir>/node_modules/react-dom/", "<rootDir>/node_modules/react-addons-test-utils/" ] }Y el .babelrc ya está en la raíz. También se incluye la broma de babel. Gracias
Eche un vistazo a los documentos de broma para la integración de paquetes web. El problema es que la broma no puede funcionar con otras cosas que js. Por lo tanto, debe burlarse de todos los archivos none js que importe. La forma más fácil es configurar un moduleNameMapper en sus configuraciones de broma.
{ "jest": { "moduleNameMapper": { "\\.(css|scss)$": "<rootDir>/__mocks__/styleMock.js" } } } con un __mocks__/styleMock.js que se ve así.
module.exports = {};Lo más fácil es agregar un paquete identity-obj-proxy :
yarn add --dev identity-obj-proxy
Y utilícelo para simular automáticamente módulos CSS/SCSS.
Agregue esto al package.json :
"jest": { "moduleNameMapper": { "\\.(css|scss)$": "identity-obj-proxy" } } O lo siguiente a jest.config.ts :
moduleNameMapper: { '\\.(css|scss)$': 'identity-obj-proxy' }De esta forma, los nombres de las clases de los módulos (S)CSS se recuperarán automáticamente en las pruebas.
Aquí está la fuente .
npm i -D identidad-obj-proxy
agregue a continuación a jest.config.js
moduleNameMapper: { "\\.(css|less|scss|sass)$": "identity-obj-proxy" } testEnvironment: 'jsdom',