RSpec ล้มเหลวเมื่อเปรียบเทียบ ActiveRecord::Relation ที่ว่างเปล่า

ฉันกำลังทดสอบคอนโทรลเลอร์ของฉันและได้ทำสิ่งนี้:

bar = SuperDuper.calculate(resource)
expect(assigns(:foo)).to eq(bar)

ฉันได้รับสิ่งนี้เป็นผล

expected: #<ActiveRecord::Relation []>
     got: #<ActiveRecord::Relation []>

(compared using ==)

เหตุใด RSpec จึงมองว่านี่เป็นความล้มเหลว

อย่างที่คุณเห็นฉันใช้ eq ซึ่งจะละเว้นข้อมูลประจำตัวของวัตถุ ไม่ใช่ equal ซึ่งเปรียบเทียบข้อมูลประจำตัวของวัตถุ


person Mohamed Anwer    schedule 23.08.2016    source แหล่งที่มา
comment
บางที rspec กำลังยืนยันความเท่าเทียมกันของวัตถุด้วยลิงก์ คุณมีวัตถุที่เหมือนกัน 2 ชิ้น แต่วัตถุเหล่านั้นชี้ไปยังพื้นที่ต่างกันในหน่วยความจำ พิจารณาเปรียบเทียบตามค่าแทนที่จะเป็นเพียงการเปรียบเทียบวัตถุ   -  person tmn4jq    schedule 23.08.2016
comment
@ tmn4jq ที่นี่ฉันใช้ eq ซึ่งเปรียบเทียบค่า ไม่ใช้ equal ซึ่งเปรียบเทียบเอกลักษณ์ของวัตถุ   -  person Mohamed Anwer    schedule 23.08.2016
comment
แก้ไขข้อบกพร่องด้วย expect(assigns(:foo).to_a).to eq(bar.to_a) หรือ expect(assigns(:foo).to_sql).to eq(bar.to_sql)   -  person Dave Schweisguth    schedule 24.08.2016


คำตอบ (1)