Ich versuche einen einfachen Snapshot-Test. Die Komponente, die ich teste, verwendet eine andere Komponente aus einem Modul. Der Test schlägt fehl, wenn versucht wird, dieses ungemockte Modul zu importieren mit:
Versagen
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)
Prüfen
'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();
})
});
SetupView-Komponente
'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';
.
.
.
Paket.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"
]
}
Zu Ihrer Information, ich habe eine .babelrc-Datei in meinem Stammverzeichnis, die auf das reaktive Preset verweist, und der Test wird ausgeführt, schlägt aber fehl, wenn ich Zeile 12 auskommentiere, da DataContainer
definiert ist.
Kannst du jest --no-cache
versuchen? Wenn Sie Ihren babelrc vor dem letzten Aufruf geändert haben, aktualisieren wir den Cache möglicherweise nicht richtig.
Wenn das nicht funktioniert, erstellen Sie bitte ein Repo auf github, das ich npm installieren und npm testen kann, um Probleme zu beheben.
Tipp: Sie benötigen keine unmockedModulePathPatterns, wenn Sie das Reactive-native-Preset verwenden, da Automocking sowieso deaktiviert wird.
Das hat bei mir nicht funktioniert. Es scheint, als ob das Problem beim Importieren des node_module react.datacontainer
. Nachdem ich etwas mehr eingegraben habe, glaube ich, dass das Jest-Preset die in es6 geschriebenen node_modules nicht kompiliert.
Leider kann ich derzeit kein Repo erstellen. Aber wenn es weiter hilft, sehen Sie hier, wie das Modul 'react.datacontainer' aussieht. https://github.com/ForceDotComLabs/react.force.datacontainer
Sie können die Vorverarbeitung für dieses Modul über diese Konfigurationsoption aktivieren: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
Wenn Sie möchten, können Sie auch ein Issue auf der Github-Seite dieses Projekts erstellen, um sie aufzufordern, ihre Abhängigkeiten vorzukompilieren und Build-Dateien auf npm zu veröffentlichen.
Hilfreichster Kommentar
Kannst du
jest --no-cache
versuchen? Wenn Sie Ihren babelrc vor dem letzten Aufruf geändert haben, aktualisieren wir den Cache möglicherweise nicht richtig.Wenn das nicht funktioniert, erstellen Sie bitte ein Repo auf github, das ich npm installieren und npm testen kann, um Probleme zu beheben.
Tipp: Sie benötigen keine unmockedModulePathPatterns, wenn Sie das Reactive-native-Preset verwenden, da Automocking sowieso deaktiviert wird.