The testing section dokumentów dla React Native sugerują, że Jest to oficjalny sposób przeprowadzania testów jednostkowych. Nie wyjaśniają jednak, jak je skonfigurować. Uruchamianie Bez żadnej konfiguracji daje błędy składniowe (bez numerów wierszy :(), ponieważ nie stosuje transformacji (np. Funkcje ES6, JSX i Flow), które reagują na kod natywny. Jest tam folder jestSupport
w źródle React Native . spróbować zawiera env.js
i scriptPrerocess.js
, ten ostatni ma kod zastosować transformacje Więc skopiowaniu tych do mojego projektu i dodaje następującą sekcję do mojego package.json:Sposób użycia Jest z React Native
"jest": {
"scriptPreprocessor": "jestSupport/scriptPreprocess.js",
"setupEnvScriptFile": "jestSupport/env.js"
},
to rozwiązuje pierwszy błąd, ale Nadal pojawia się następujący błąd:
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
Czy jest więcej rzeczy do zrobienia, aby Czy rozumiesz React Native? Czy są jakieś przykłady konfiguracji Jest do przetestowania React Native?
EDIT:
Nie było sprawdzenie w scriptPreprocess
że zatrzymał go z systemem nad każdego pliku w node_modules
co oczywiście wliczone całość React Native. Usunięcie tego spowoduje usunięcie powyższego błędu. Jednak teraz otrzymuję więcej błędów ze źródła React Native, zdecydowanie wydaje się, że nie ma być uruchamiany wewnątrz Jest.
EDIT2:
Jawne ustawienie makiety dla modułu react-native
działa:
jest.setMock('react-native', {});
To wydaje się jak to będzie bardzo ręczne i nie bardzo przydatne do testowania kodu, który współdziała z React Natywne API dużo. Zdecydowanie wciąż czuję, że czegoś brakuje!
Gdzie jest to 'katalog jestSupport' o którym mówisz? Nie widzę tego w projekcie typu React natywnego 0.4 lub 0.7. – pbanka
Nie ma go w pakiecie NPM, ale można go pobrać z Github: https://github.com/facebook/react-native/tree/master/jestSupport –