দুটি অ্যারে সমান কিনা তা পরীক্ষা করার জন্য জুঁই.জেসের কোনও উপায় আছে, উদাহরণস্বরূপ:
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]);
});
});
শুধু তথ্যের জন্য:
টুবি () বনাম টু একুয়াল (): টুএকুয়াল () সমতা পরীক্ষা করে। অন্যদিকে, টুবি () নিশ্চিত করে যে তারা ঠিক একই জিনিস।
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