Saya mencoba tes snapshot sederhana. Komponen yang saya uji menggunakan komponen lain dari sebuah modul. Tes gagal saat mencoba mengimpor modul yang tidak di-mock ini dengan:
Kegagalan
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)
Tes
'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 Komponen
'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"
]
}
FYI, saya memiliki file .babelrc di direktori root saya yang menunjuk ke preset asli-reaksi dan pengujian berjalan tetapi gagal jika saya mengomentari baris 12 karena DataContainer
tidak ditentukan.
Bisakah Anda mencoba jest --no-cache
? Jika Anda mengubah babelrc Anda sebelum permintaan terakhir, kami mungkin tidak memperbarui cache dengan benar.
Jika itu tidak berhasil, silakan buat repo di github yang dapat saya instal npm dan uji npm untuk memecahkan masalah.
Tip: Anda tidak perlu unmockedModulePathPatterns saat menggunakan react-native-preset karena automocking akan tetap dinonaktifkan.
Itu tidak berhasil untuk saya. Sepertinya masalahnya adalah dengan mengimpor node_module react.datacontainer
. Setelah menggali lebih dalam, saya yakin prasetel lelucon tidak mengkompilasi node_modules yang ditulis dalam es6.
Sayangnya, saya tidak dapat membuat repo saat ini. Tetapi jika ini membantu lebih jauh, inilah tampilan modul 'react.datacontainer'. https://github.com/ForceDotComLabs/react.force.datacontainer
Anda dapat mengaktifkan prapemrosesan untuk modul ini melalui opsi konfigurasi ini: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
Jika mau, Anda juga dapat membuat masalah di halaman github proyek ini untuk meminta mereka mengkompilasi dependensi mereka terlebih dahulu dan menerbitkan file build di npm.
Komentar yang paling membantu
Bisakah Anda mencoba
jest --no-cache
? Jika Anda mengubah babelrc Anda sebelum permintaan terakhir, kami mungkin tidak memperbarui cache dengan benar.Jika itu tidak berhasil, silakan buat repo di github yang dapat saya instal npm dan uji npm untuk memecahkan masalah.
Tip: Anda tidak perlu unmockedModulePathPatterns saat menggunakan react-native-preset karena automocking akan tetap dinonaktifkan.