J'essaie un simple test d'instantané. Le composant que je teste utilise un autre composant d'un module. Le test échoue en essayant d'importer ce module non simulé avec :
Échec
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)
Test
'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();
})
});
Composant 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"
]
}
Pour info, j'ai un fichier .babelrc dans mon répertoire racine pointant vers le préréglage natif de réaction et le test s'exécute mais échoue si je commente la ligne 12 car DataContainer
n'est pas défini.
Pouvez-vous essayer jest --no-cache
? Si vous avez modifié votre babelrc avant la dernière invocation, nous pourrions ne pas mettre à jour le cache correctement.
Si cela ne fonctionne pas, veuillez créer un dépôt sur github que je peux installer npm et tester npm pour dépanner.
Astuce : vous n'avez pas besoin d'unmockedModulePathPatterns lorsque vous utilisez le préréglage react-native car l'automocking sera de toute façon désactivé.
Cela n'a pas fonctionné pour moi. Il semble que le problème soit lié à l'importation du node_module react.datacontainer
. Après avoir creusé un peu plus, je pense que le préréglage de plaisanterie ne compile pas les node_modules écrits dans es6.
Malheureusement, je ne peux pas créer de dépôt pour le moment. Mais si cela peut vous aider, voici à quoi ressemble le module 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer
Vous pouvez activer le prétraitement pour ce module via cette option de configuration : http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
Si vous le souhaitez, vous pouvez également créer un problème sur la page github de ce projet pour leur demander de précompiler leurs dépendances et de publier les fichiers de construction sur npm.
Commentaire le plus utile
Pouvez-vous essayer
jest --no-cache
? Si vous avez modifié votre babelrc avant la dernière invocation, nous pourrions ne pas mettre à jour le cache correctement.Si cela ne fonctionne pas, veuillez créer un dépôt sur github que je peux installer npm et tester npm pour dépanner.
Astuce : vous n'avez pas besoin d'unmockedModulePathPatterns lorsque vous utilisez le préréglage react-native car l'automocking sera de toute façon désactivé.