क्या चमेली में एक तरीका है। यह जांचने के लिए कि दो सरणियाँ समान हैं, उदाहरण के लिए:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
न ही काम लगता है।
क्या चमेली में एक तरीका है। यह जांचने के लिए कि दो सरणियाँ समान हैं, उदाहरण के लिए:
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
न ही काम लगता है।
जवाबों:
बस परीक्षण किया और इसके साथ काम करता है toEqual
कृपया मेरी परीक्षा लें:
describe('toEqual', function() {
it('passes if arrays are equal', function() {
var arr = [1, 2, 3];
expect(arr).toEqual([1, 2, 3]);
});
});
सिर्फ जानकारी के लिए:
toBe () बनाम toququal (): toEqual () तुल्यता की जांच करता है। दूसरी ओर, toBe (), सुनिश्चित करता है कि वे ठीक उसी वस्तु हैं।
toBeCloseTo(expected,2)
लेकिन यह काम नहीं करता है।
आप नीचे दिए गए उल्लेख की तरह एक सरणी की तुलना कर सकते हैं यदि सरणी में कुछ मान हैं
it('should check if the array are equal', function() {
var mockArr = [1, 2, 3];
expect(mockArr ).toEqual([1, 2, 3]);
});
लेकिन अगर किसी फ़ंक्शन से लौटाए गए सरणी में 1 से अधिक तत्व हैं और सभी शून्य हैं तो उपयोग करके सत्यापित करें
expect(mockArray[0]).toBe(0);
सिर्फ रिकॉर्ड के लिए आप हमेशा JSON.stringify का उपयोग करके तुलना कर सकते हैं
const arr = [1,2,3];
expect(JSON.stringify(arr)).toBe(JSON.stringify([1,2,3]));
expect(JSON.stringify(arr)).toEqual(JSON.stringify([1,2,3]));
यह स्वाद के सभी मीटर है, यह जटिल शाब्दिक वस्तुओं के लिए भी काम करेगा
मेरे पास एक समान मुद्दा था जहां सरणियों में से एक को संशोधित किया गया था। मैं इसके लिए उपयोग कर रहा था $httpBackend
, और उसमें से दी गई वस्तु वास्तव में एक $promise
ऑब्जेक्ट थी जिसमें एरे ( Array
ऑब्जेक्ट नहीं ) था।
आप एक toBeArray
फंक्शन बनाकर ऐरे से मिलान करने के लिए चमेली का माचिस बना सकते हैं :
beforeEach(function() {
'use strict';
this.addMatchers({
toBeArray: function(array) {
this.message = function() {
return "Expected " + angular.mock.dump(this.actual) + " to be array " + angular.mock.dump(array) + ".";
};
var arraysAreSame = function(x, y) {
var arraysAreSame = true;
for(var i; i < x.length; i++)
if(x[i] !== y[i])
arraysAreSame = false;
return arraysAreSame;
};
return arraysAreSame(this.actual, array);
}
});
});
और फिर इसे अन्य चमेली मिलान की तरह अपने परीक्षणों में उपयोग करें:
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
x=[1,2]
, y=[1,2,3]
क्योंकि यह केवल पहले x.length
तत्वों की जांच करता है । आप if (x.length !== y.length) { return false; }
पहले से जांच कर इसे ठीक कर सकते हैं ।
for (var i; ...)
=> x[undefined]
, var arraysAreSame = function ... var arraysAreSame = true
:(
expect([1]).toBeArray([2])
। और वास्तव में किसी भी अन्य सरणी, क्योंकिundefined + 1 => NaN