চেই টেস্ট অ্যারে সমতা প্রত্যাশার মতো কাজ করে না


235

নিম্নলিখিতগুলি কেন ব্যর্থ হয়?

expect([0,0]).to.equal([0,0]);

এবং এটি পরীক্ষা করার সঠিক উপায় কী?

উত্তর:


360

জন্য আশা , .equalবরং তাদের তথ্য চেয়ে বস্তু তুলনা হবে, এবং আপনার ক্ষেত্রে এটি দুটি ভিন্ন অ্যারে হয়।

.eqlমানগুলি গভীরভাবে তুলনা করতে ব্যবহার করুন। এই লিঙ্কটি দেখুন
অথবা আপনি .deep.equalএকই অনুকরণ করতে ব্যবহার করতে পারেন .eql
অথবা আপনার ক্ষেত্রে আপনি চেক করতে চাইতে পারেন .members

জন্য দাবি আপনি ব্যবহার করতে পারেন .deepEqual, লিংক


2
এফটিআর, গভীর সমান সিনট্যাক্স এ পরিবর্তিত হয়েছে: .deepEqual()( chaijs.com/api/assert )।
Ludder

7
এটা পরিবর্তিত হয় না আপনি খুঁজছেন এ দাবি কার্যকারিতা, কিন্তু না আশা / উচিত যা বিষয় স্টার্টার সম্পর্কে উদ্বিগ্ন ছিল।
মোকা

5
আপনি ঠিক বলেছেন, আমি ভাল পড়া হয়নি। আমি ভেবেছিলাম এটি অন্য একটি এপিআই পরিবর্তন।
লুডার

6
to.deep.equal(['a','b'])কাজ বলে মনে হচ্ছে না। যাইহোক to.have.all.members(['a','b'])। এত জটিল ...
জ্যাকব

যখন অবজেক্ট বৈশিষ্ট্যের ক্রমটি অনির্দেশ্য ছিল তখন chaijs.com/plugins/deep-equal-in-any-order ভাল কাজ করেছিল।
আশোকান

60

গভীর সমান ব্যবহার করার চেষ্টা করুন। এটি নেস্টেড অ্যারেগুলির পাশাপাশি নেস্টেড জেসনকে তুলনা করবে।

expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });

পড়ুন দয়া করে প্রধান ডকুমেন্টেশন সাইটে


7
এটি অ্যারেগুলির জন্যও কাজ করে:expect([1, 5, 10].sort()).to.deep.equal([1, 10, 5])
অ্যালেক্সান্ডার

-1

এসোসিয়েটিভ অ্যারেগুলি গভীরভাবে পরীক্ষা করতে চাই কীভাবে এটি ব্যবহার করবেন।

আমি একটি বিষয় জাহির করা যে দুটি চেষ্টা ছিল মিশুক অ্যারে সমান ছিল। আমি জানি যে এগুলি সত্যিই জাভাস্ক্রিপ্টে ব্যবহার করা উচিত নয় তবে আমি লিগ্যাসি কোডের আশেপাশে ইউনিট পরীক্ষা লিখছিলাম যা একটি এসোসিয়েটিভ অ্যারের রেফারেন্স দেয়। :-)

আমি আমার ফাংশন কলের আগে ভ্যারিয়েবলটিকে একটি বস্তুর (অ্যারে নয়) হিসাবে সংজ্ঞায়িত করে এটি করেছি:

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');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.