জেসমিন.জে এসের সাথে তুলনা করে


205

দুটি অ্যারে সমান কিনা তা পরীক্ষা করার জন্য জুঁই.জেসের কোনও উপায় আছে, উদাহরণস্বরূপ:

arr = [1, 2, 3]
expect(arr).toBe([1, 2, 3])
expect(arr).toEqual([1, 2, 3])

দু'জনেই কাজ করছে বলে মনে হচ্ছে না।

উত্তর:


341

শুধু পরীক্ষাটি করেছে এবং এটি দিয়ে কাজ করে toEqual

দয়া করে আমার পরীক্ষাটি সন্ধান করুন:

http://jsfiddle.net/7q9N7/3/

describe('toEqual', function() {
    it('passes if arrays are equal', function() {
        var arr = [1, 2, 3];
        expect(arr).toEqual([1, 2, 3]);
    });
});

শুধু তথ্যের জন্য:

টুবি () বনাম টু একুয়াল (): টুএকুয়াল () সমতা পরীক্ষা করে। অন্যদিকে, টুবি () নিশ্চিত করে যে তারা ঠিক একই জিনিস।


এইচএম, ধন্যবাদ, দেখে মনে হচ্ছে সমস্যাটি হ'ল আমি যে অ্যারেটির সাথে তুলনা করছি তা সংশোধিত হয়েছে, সুতরাং এটি আরআর মতো [= 1, 2, 3] আরার ['পপ'] = ফাংশন () {...} প্রত্যাশা (আরআর)। টো একোয়ালস ([1, 2, 3])
ব্যবহারকারী 2032804

2
অ্যাপসিলনের মধ্যে মান সমান হলে কীভাবে পরীক্ষা করবেন? উদাহরণস্বরূপ, আমার পরীক্ষাটি ব্যর্থ প্রত্যাশিত [-9, -6, 6, 3, 1.0000000000000004, 2] সমান [-9, -6, 6, 3, 1, 2]
মরফিয়াস

@ এমরফিয়াস - আমি চেষ্টা করেছি toBeCloseTo(expected,2)কিন্তু মনে হচ্ছে এটি কার্যকর হয় না।
cod3monk3y

ToBeCloseTo এর দ্বিতীয় যুক্তি হ'ল দশমিক জায়গাগুলির সাথে এটির তুলনা করা হবে।
মর্ফিয়াস

1
এটি ডিফল্টভাবে জাভাস্ক্রিপ্টে "==" এ ফিরে আসে। এটি কেবল নিরাপদ নয় যেহেতু কেবল আসল মানগুলিই তুলনা করা হয় না, তবে পুরো বস্তুটি।
পিটার

0

অ্যারের কিছু মান থাকলে আপনি নীচের বর্ণিত একটি অ্যারের তুলনা করতে পারেন

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);

-3

কেবল রেকর্ডের জন্য আপনি সর্বদা 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]));

এটি সমস্ত মিটার স্বাদ, এটি জটিল আক্ষরিক বস্তুর জন্যও কাজ করবে


কেন আমাদের তখন টু এবং টু একালের মধ্যে পার্থক্য প্রয়োজন?
লুকা বোররিওন

কোনও পার্থক্য নেই, আমি কেবল এটিকে প্রশ্নের মতো দেখতে দিতে চাই
ওহাদ সদন

টোবে এবং টুএকএকএল এর মধ্যে পার্থক্য রয়েছে যে ওপি সম্পর্কে অনিশ্চিত ছিল। একটি উত্তরের অনুপযুক্ত ব্যবহার না দেখিয়ে বিষয়গুলি স্পষ্ট করা উচিত। স্বীকৃত উত্তরটিতে ইতিমধ্যে এটি সমস্ত রয়েছে, আপনার উত্তরটি সম্ভবত ঝাঁঝালোকে এমনভাবে কাজ করতে বাধ্য করবে যাতে এটি কাজ করার উদ্দেশ্যে নয় তা বোঝাতে আরও বিভ্রান্তি সংঘটিত হয়।
লুকা বোররিওন

-4

আমার অনুরূপ সমস্যা ছিল যেখানে অ্যারেগুলির মধ্যে একটিতে সংশোধন করা হয়েছিল। আমি এটির জন্য ব্যবহার করছিলাম $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);
});

2
আমি টাইপ এরর পেয়ে যাচ্ছি: এই.এডিডি ম্যাচার্স কোনও ফাংশন নয়
অ্যান্ডি এন্টিটি

4
আপনার সরবরাহ করা "অ্যারেআরেসেম" ফাংশনটি অ্যারেগুলির জন্য একটি মিথ্যা ইতিবাচক দেবে x=[1,2], y=[1,2,3]কারণ এটি কেবলমাত্র প্রথম x.lengthউপাদানগুলি পরীক্ষা করে । আপনি if (x.length !== y.length) { return false; }আগে যাচাই করে এটি ঠিক করতে পারেন ।
ওয়ার্কিনাল

1
@ অ্যান্ডিএন্টিটি "অ্যাডম্যাচার্স ফাংশনটি আর অনুমান করা যায় না (এটি) এটি এখন বিশ্ব জুঁইয়ের বস্তুতে রয়েছে" " - জেসমিন ডক্স দেখুন
rwisch45

for (var i; ...)=> x[undefined], var arraysAreSame = function ... var arraysAreSame = true:(
আন্দ্রে ওয়ার্ল্যাং

@ ওয়ার্কিনাল মজার, এটি ধরতেও ব্যর্থ expect([1]).toBeArray([2])। এবং অন্য কোনও undefined + 1 => NaN
অ্যারেও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.