ची परीक्षण सरणी समानता अपेक्षा के अनुरूप काम नहीं करती है


235

निम्नलिखित क्यों विफल होता है?

expect([0,0]).to.equal([0,0]);

और परीक्षण करने का सही तरीका क्या है?

जवाबों:


360

के लिए उम्मीद , .equalबल्कि अपने डेटा से वस्तुओं की तुलना करेगा, और आपके मामले में यह दो अलग अलग सरणियों है।

.eqlमूल्यों की गहराई से तुलना करने के लिए उपयोग करें । इस लिंक को देखें
या आप के .deep.equalरूप में एक ही अनुकरण करने के लिए उपयोग कर सकते हैं .eql
या आपके मामले में आप जांच कर सकते हैं .members

के लिए दावा है आप उपयोग कर सकते हैं .deepEqual, लिंक


2
FTR, गहरा समान सिंटैक्स बदल गया है: .deepEqual()( chaijs.com/api/assert )।
9

7
इसे बदला नहीं गया है, आप एसेर्ट्स की कार्यक्षमता को देख रहे हैं , लेकिन यह अपेक्षा नहीं करनी चाहिए कि किस विषय पर स्टार्टर को चिंतित होना चाहिए
मोका

5
आप ठीक कह रहे हैं, मैंने अच्छा नहीं पढ़ा। मुझे लगा कि यह सिर्फ एक और एपीआई परिवर्तन है।
29

6
to.deep.equal(['a','b'])काम नहीं लगता है। हालाँकि to.have.all.members(['a','b'])करता है। इतना बोझिल ...
याकूब

chaijs.com/plugins/deep-equal-in-any-order ने अच्छा काम किया जब ऑब्जेक्ट विशेषताओं का क्रम अप्रत्याशित था।
असोकन

60

गहरी समान का उपयोग करने का प्रयास करें। यह नेस्टेड एरर्स के साथ-साथ नेस्टेड जोंस की तुलना करेगा।

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

कृपया मुख्य दस्तावेज़ साइट देखें ।


7
यह सरणियों के लिए भी काम करता है:expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
alxndr

-1

यह है कि कैसे चाय का उपयोग करने के लिए साहचर्य सरणियों का गहराई से परीक्षण करें।

मेरे पास एक मुद्दा था कि दो सहयोगी सरणियों को बराबर करने का प्रयास किया गया था । मुझे पता है कि इन्हें वास्तव में जावास्क्रिप्ट में उपयोग नहीं किया जाना चाहिए, लेकिन मैं विरासत कोड के आसपास इकाई परीक्षण लिख रहा था जो एक साहचर्य सरणी का संदर्भ देता है। :-)

मैंने अपने फंक्शन कॉल से पहले वेरिएबल को ऑब्जेक्ट (नहीं सरणी) के रूप में परिभाषित करके किया था:

var myAssocArray = {};   // not []
var expectedAssocArray = {};  // not []

expectedAssocArray['myKey'] = 'something';
expectedAssocArray['differentKey'] = 'something else';

// legacy function which returns associate array reference
myFunction(myAssocArray);

assert.deepEqual(myAssocArray, expectedAssocArray,'compare two associative arrays');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.