वहाँ jasmine.js में एक तरह से उदाहरण के लिए अगर दो सरणियों बराबर हैं जाँच करने के लिए, है:Jasmine.js की तुलना सरणियों
arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])
न तो काम करने के लिए लगता है।
वहाँ jasmine.js में एक तरह से उदाहरण के लिए अगर दो सरणियों बराबर हैं जाँच करने के लिए, है:Jasmine.js की तुलना सरणियों
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() versus toEqual(): toEqual() checks equivalence. toBe(), on the other hand, makes sure that they're the exact same object.
मैं एक था simil एआर मुद्दा जहां एक सरणी संशोधित किया गया था। मैं इसे $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);
}
});
});
और फिर बस अन्य चमेली matchers की तरह अपने परीक्षण में उपयोग:
it('should compare arrays properly', function() {
var array1, array2;
/* . . . */
expect(array1[0]).toBe(array2[0]);
expect(array1).toBeArray(array2);
});
मुझे TypeError मिल रहा है: this.addMatchers एक फ़ंक्शन नहीं है – AndyTheEntity
आपके द्वारा प्रदान किए गए "arraysAreSame" फ़ंक्शन एरे के लिए झूठी सकारात्मक दे देंगे 'x = [1,2] ',' y = [1,2,3 ] 'चूंकि यह केवल पहले' x.length' तत्वों की जांच करता है। आप इसे जांच कर ठीक कर सकते हैं 'अगर (x.length! == y.length) {वापसी झूठी; } 'पहले से। – warchinal
@AndyTheEntity "addMatchers फ़ंक्शन अब spec (यह) पर नहीं है, यह अब वैश्विक जैस्मीन ऑब्जेक्ट पर है।" - देखें [जैस्मीन डॉक्स] (http://jasmine.github.io/2.0/upgrading.html) – rwisch45
हम्म, धन्यवाद , ऐसा लगता है कि समस्या यह है कि जिस सरणी की तुलना मैं कर रहा हूं वह संशोधित है, इसलिए यह arr = [1, 2, 3] arr ['pop'] = function() {...} की अपेक्षा करता है (arr}) .toEquals ([1, 2, 3]) – user2032804
ईपीएसलॉन के भीतर मान बराबर होने का परीक्षण कैसे करें? उदाहरण के लिए, मेरा परीक्षण अपेक्षाकृत [-9, -6, 6, 3, 1.0000000000000004, 2] बराबर [-9, -6, 6, 3, 1, 2] विफल रहता है। – morpheus
@ मॉर्फीस - मैंने 'toBeCloseTo (अपेक्षित, 2) 'की कोशिश की है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। – cod3monk3y