Lo testing section dei documenti per React Native suggerisce che Jest è il modo ufficiale per eseguire test unitari. Tuttavia, non spiegano come ottenerlo. L'esecuzione di Jest senza alcuna impostazione fornisce errori di sintassi (senza numeri di riga :() perché non applica le trasformazioni (ad esempio caratteristiche ES6, JSX e Flow) che il codice React Native tende a utilizzare. C'è una cartella jestSupport
nell'origine React Native . provare che contiene un env.js
e scriptPrerocess.js
, quest'ultimo ha codice per applicare le trasformazioni Così ho copiato quelli nel mio progetto e ha aggiunto la seguente sezione al mio package.json:Come utilizzare Jest con React Native
"jest": {
"scriptPreprocessor": "jestSupport/scriptPreprocess.js",
"setupEnvScriptFile": "jestSupport/env.js"
},
Questo risolve il primo errore, ma Ricevo ancora il seguente errore:
Using Jest CLI v0.4.0
FAIL js/sync/__tests__/SynchronisedStorage-tests.js
SyntaxError: /Users/tom/my-project/js/sync/__tests__/SynchronisedStorage-tests.js: /Users/tom/my-project/js/sync/SynchronisedStorage.js: /Users/tom/my-project/node_modules/react-native/Libraries/react-native/react-native.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/browser/ui/React.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/utils/ReactChildren.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/addons/ReactFragment.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/classic/element/ReactElement.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/core/ReactContext.js: /Users/tom/my-project/node_modules/react-native/node_modules/react-tools/src/vendor/core/warning.js: Unexpected token .
1 test failed, 0 tests passed (1 total)
Run time: 0.456s
C'è altro che devo fare per fare Jest capisce React Native? Esistono esempi di setup di Jest per testare React Native?
EDIT:
C'era un check-in scriptPreprocess
che ha fermato da in esecuzione su qualsiasi file in node_modules
che ovviamente comprendeva tutta la React nativo. Rimuovendo ciò corregge l'errore sopra. Tuttavia, ora sto ricevendo più errori dalla sorgente React Native, sembra decisamente che non sia pensato per essere eseguito all'interno di Jest.
EDIT2:
impostare in modo esplicito il mock per il modulo react-native
funziona:
jest.setMock('react-native', {});
che sembra che sta per essere molto manuale e non molto utile per testare il codice che interagisce con il React API Native molto. Sicuramente mi sento ancora come se mi mancasse qualcosa!
Dove si trova questa directory 'jestSupport' di cui parli? Non lo vedo in un progetto React nativo 0.4 o 0.7. – pbanka
Non è incluso nel pacchetto NPM ma è possibile scaricarlo da Github: https://github.com/facebook/react-native/tree/master/jestSupport –