जवाबों:
के लिए उम्मीद , .equal
बल्कि अपने डेटा से वस्तुओं की तुलना करेगा, और आपके मामले में यह दो अलग अलग सरणियों है।
.eql
मूल्यों की गहराई से तुलना करने के लिए उपयोग करें । इस लिंक को देखें ।
या आप के .deep.equal
रूप में एक ही अनुकरण करने के लिए उपयोग कर सकते हैं .eql
।
या आपके मामले में आप जांच कर सकते हैं .members
।
के लिए दावा है आप उपयोग कर सकते हैं .deepEqual
, लिंक ।
to.deep.equal(['a','b'])
काम नहीं लगता है। हालाँकि to.have.all.members(['a','b'])
करता है। इतना बोझिल ...
गहरी समान का उपयोग करने का प्रयास करें। यह नेस्टेड एरर्स के साथ-साथ नेस्टेड जोंस की तुलना करेगा।
expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
कृपया मुख्य दस्तावेज़ साइट देखें ।
expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
यह है कि कैसे चाय का उपयोग करने के लिए साहचर्य सरणियों का गहराई से परीक्षण करें।
मेरे पास एक मुद्दा था कि दो सहयोगी सरणियों को बराबर करने का प्रयास किया गया था । मुझे पता है कि इन्हें वास्तव में जावास्क्रिप्ट में उपयोग नहीं किया जाना चाहिए, लेकिन मैं विरासत कोड के आसपास इकाई परीक्षण लिख रहा था जो एक साहचर्य सरणी का संदर्भ देता है। :-)
मैंने अपने फंक्शन कॉल से पहले वेरिएबल को ऑब्जेक्ट (नहीं सरणी) के रूप में परिभाषित करके किया था:
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');
.deepEqual()
( chaijs.com/api/assert )।