أحاول اختبار لقطة بسيطة. يستخدم المكون الذي أختبره مكونًا آخر من وحدة نمطية. فشل الاختبار عند محاولة استيراد هذه الوحدة غير المزعجة باستخدام:
بالفشل
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)
اختبار
'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 المكون
'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"
]
}
لمعلوماتك ، لدي ملف .babelrc في الدليل الجذر الخاص بي يشير إلى الإعداد المسبق للتفاعل الأصلي ويتم تشغيل الاختبار ولكنه يفشل إذا قمت بالتعليق على السطر 12 نظرًا لأن DataContainer
غير محدد.
هل يمكنك تجربة jest --no-cache
؟ إذا قمت بتغيير babelrc قبل الاستدعاء الأخير ، فقد لا نقوم بتحديث ذاكرة التخزين المؤقت بشكل صحيح.
إذا لم يفلح ذلك ، فيرجى إنشاء repo على github يمكنني تثبيت npm واختبار npm لاستكشاف الأخطاء وإصلاحها.
نصيحة: لا تحتاج إلى unmockedModulePathPatterns عند استخدام الإعداد المسبق للتفاعل الأصلي لأن التخزين التلقائي سيتم تعطيله على أي حال.
هذا لم ينجح بالنسبة لي. يبدو أن المشكلة تتعلق باستيراد node_module react.datacontainer
. بعد البحث في المزيد ، أعتقد أن الإعداد المسبق الدعائي لا يقوم بتجميع وحدات node_modules المكتوبة في es6.
لسوء الحظ ، لا يمكنني إنشاء الريبو في الوقت الحالي. ولكن إذا كان يساعد بشكل أكبر ، فإليك ما تبدو عليه الوحدة النمطية "response.datacontainer". https://github.com/ForceDotComLabs/react.force.datacontainer
يمكنك تمكين المعالجة المسبقة لهذه الوحدة عبر خيار التكوين هذا: http://facebook.github.io/jest/docs/tutorial-react-native.html#preprocessorignorepatterns -customization
إذا كنت ترغب في ذلك ، يمكنك أيضًا إنشاء مشكلة على صفحة github لهذا المشروع لمطالبتهم بترجمة تبعياتهم مسبقًا ونشر ملفات الإنشاء على npm.
التعليق الأكثر فائدة
هل يمكنك تجربة
jest --no-cache
؟ إذا قمت بتغيير babelrc قبل الاستدعاء الأخير ، فقد لا نقوم بتحديث ذاكرة التخزين المؤقت بشكل صحيح.إذا لم يفلح ذلك ، فيرجى إنشاء repo على github يمكنني تثبيت npm واختبار npm لاستكشاف الأخطاء وإصلاحها.
نصيحة: لا تحتاج إلى unmockedModulePathPatterns عند استخدام الإعداد المسبق للتفاعل الأصلي لأن التخزين التلقائي سيتم تعطيله على أي حال.