2016-04-07 24 views
13

के लिए टेस्ट प्लेटफ़ॉर्म विशिष्ट एक्सटेंशन कोड वर्तमान में, प्रतिक्रियात्मक गतिशील रूप से चलने वाले प्लेटफॉर्म के लिए एक विशिष्ट फ़ाइल एक्सटेंशन, *.ios.js या *.android.js के साथ एक फ़ाइल की आवश्यकता होती है। हालांकि, जब एक परीक्षण वातावरण के अंदर इस कोड चल रहा है, हम एक require त्रुटि मिलती है क्योंकि मॉड्यूल require('./module') फ़ाइल पेड़ है, जो लग रहा है में नहीं पाया जा सकता है जैसे:प्रतिक्रिया मूल

  • module.ios.js
  • module.android.js

कैसे क्या हम इन मुद्दों को एक परीक्षण वातावरण में संभाल सकते हैं?

उत्तर

0

यह एक तरह से बदसूरत है और हो सकता है वहाँ एक बेहतर समाधान है लेकिन ऐसा लगता है कि आप एक module.js फ़ाइल है कि परीक्षण में लेकिन मंच वातावरण में इस्तेमाल किया जाएगा यह अभी भी module.ios.js या module.android.js का उपयोग करेगा बना सकते हैं।

0

आपको अपने परीक्षणों में प्लेटफ़ॉर्म विशिष्ट निर्भरताओं को हल करने के लिए एक कस्टम कंपाइलर बनाने की आवश्यकता है। आप मोचा का उपयोग कर रहे हैं, तो यह शायद तुम्हारी मदद करेगा:

http://lidatang.com/setup-mocha-testing-react-native/

1

जेस्ट 17.0.0 के रूप में आप इस के लिए defaultPlatform विन्यास का उपयोग कर सकते हैं - जेस्ट के सबसे निचले भाग को देखने प्रतिक्रिया मूल निवासी tutorial

यह वहाँ से पता चलता रूप में, आप कुछ इस तरह से कॉन्फ़िगर करेंगे:

"haste": { 
    "defaultPlatform": "ios", 
    "platforms": ["android", "ios"], 
}, 

जाहिर है, इस का मतलब होगा अपने परीक्षण केवल iOS (या अपने घटक के संस्करण केवल एंड्रॉयड लोड करते हैं, यह कॉन्फ़िगर करने के लिए निर्भर करता है आप कैसे चुनें)।

आप यह महत्वपूर्ण दोनों संस्करणों का परीक्षण करने में, तो आप शायद अधिक समाधान this संस्करण में उल्लिखित की तरह कुछ करने की आवश्यकता होगी, संभवतः Platform.OS जोड़ तोड़ और सीधे require.requireActual का उपयोग कर।

(भी this मुद्दा है, मामले में एक कम hacky समाधान अंत में पाया जाता है ट्रैक करना चाहेंगे।)

2

moduleFileExtensions के लिए मंच विशिष्ट एक्सटेंशन जोड़ने jest.14.1 साथ मेरे लिए समस्या तय। क्रेडिट: github link

नमूना package.json से स्निपेट है जो scene.jest.js (x) सहित सभी फ़ाइलों को चलाएगा।

... 
"jest": { 
    "verbose": true, 
    "preset": "jest-react-native", 
    "moduleFileExtensions": ["js", "android.js", "ios.js"], 
    "testRegex": "\\.scene\\.jest\\.jsx$" 
    } 
... 
संबंधित मुद्दे