ฉันมักจะต้องการเปรียบเทียบอาร์เรย์และตรวจสอบให้แน่ใจว่าพวกเขามีองค์ประกอบเดียวกันในลำดับใด ๆ มีวิธีรัดกุมในการทำเช่นนี้ใน RSpec?
นี่คือวิธีการที่ไม่เป็นที่ยอมรับ:
#to_set
ตัวอย่างเช่น:
expect(array.to_set).to eq another_array.to_set
หรือ
array.to_set.should == another_array.to_set
สิ่งนี้จะล้มเหลวเมื่ออาร์เรย์มีรายการที่ซ้ำกัน
#sort
ตัวอย่างเช่น:
expect(array.sort).to eq another_array.sort
หรือ
array.sort.should == another_array.sort
สิ่งนี้จะล้มเหลวเมื่อองค์ประกอบอาร์เรย์ไม่ได้ใช้งาน #<=>
eq
จับคู่เช่นexpect([1, 2]).to_not eq([2, 1])
to_set
และsize
ไม่ได้ทำในสิ่งที่คุณต้องการ เช่น [a, b, b] จะตรงกับ [a, a, b] ไชโย!