Estoy probando una simple prueba de instantáneas. El componente que estoy probando usa otro componente de un módulo. La prueba falla al intentar importar este módulo no simulado con:
Falla
Using Jest CLI v14.1.0, jasmine2, babel-jest, jest-react-native preset
FAIL js/app/SetupView/__tests__/SetupView-test.js (0s)
Runtime Error
- SyntaxError: Unexpected reserved word
at transformAndBuildScript (../../../../../usr/local/lib/node_modules/jest-cli/node_modules/jest-runtime/build/transform.js:306:10)
at Object.<anonymous> (js/app/SetupView/index.js:12:17)
at Object.<anonymous> (js/app/SetupView/__tests__/SetupView-test.js:11:12)
1 test suite failed, 0 tests passed (0 total in 1 test suite, run time 2.419s)
Prueba
'use strict';
import 'react-native';
import React from 'react';
import SetupView from '../index';
import renderer from 'react-test-renderer';
describe('SetupView', ()=> {
it('renders correctly', ()=>{
const tree = renderer.create(
<SetupView/>
).toJSON();
expect(tree).toMatchSnapshot();
})
});
Componente SetupView
'use strict';
import React from 'react';
import {
View,
Text,
TouchableHighlight,
Image,
Animated,
} from 'react-native';
import DataContainer from 'react.datacontainer'; //<---fails here
import DashboardSettings from './DashboardSettings';
.
.
.
package.json
"jest": {
"globals": {
"__DEV__": true
},
"collectCoverage": false,
"verbose": true,
"preset": "jest-react-native",
"modulePathIgnorePatterns": [
"node_modules/react-native/node_modules/yeoman-generator",
"node_modules/react-native/node_modules/fbjs"
],
"unmockedModulePathPatterns": [
"react.datacontainer",
"react.data",
"react.base.theme",
"react.layout"
]
}
Para su información, tengo un archivo .babelrc en mi directorio raíz que apunta al preajuste nativo de reacción y la prueba se ejecuta pero falla si comento la línea 12 ya que DataContainer
no está definido.
¿Puedes probar jest --no-cache
? Si cambió su babelrc antes de la última invocación, es posible que no actualicemos la caché correctamente.
Si eso no funciona, cree un repositorio en github que pueda instalar npm y probar npm para solucionar problemas.
Sugerencia: no necesita unmockedModulePathPatterns cuando use react-native-preset porque el automontaje estará deshabilitado de todos modos.
Eso no funcionó para mí. Parece que el problema está en la importación de node_module react.datacontainer
. Después de profundizar un poco más, creo que el ajuste preestablecido de broma no es compilar los node_modules escritos en es6.
Desafortunadamente, no puedo crear un repositorio en este momento. Pero si ayuda más, así es como se ve el módulo 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer
Puede habilitar el preprocesamiento para este módulo a través de esta opción de configuración: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
Si lo desea, también puede crear un problema en la página de github de este proyecto para pedirles que precompilen sus dependencias y publiquen archivos de compilación en npm.
Comentario más útil
¿Puedes probar
jest --no-cache
? Si cambió su babelrc antes de la última invocación, es posible que no actualicemos la caché correctamente.Si eso no funciona, cree un repositorio en github que pueda instalar npm y probar npm para solucionar problemas.
Sugerencia: no necesita unmockedModulePathPatterns cuando use react-native-preset porque el automontaje estará deshabilitado de todos modos.