我有一个带有测试的 rspec 控制器:
it "assigns all rate_card_details as @rate_card_details" do
rate_card_detail = FactoryGirl.create(:rate_card_detail)
get :index, {}, valid_session
assigns(:rate_card_details).should eq([rate_card_detail])
end
对于大多数模型,这工作正常。但是,在这种情况下,该rate
字段是小数。这会导致 rspec 比较(出于某种原因)将 BigDecimal 的 1 个实例与另一个实例进行比较,包括其在内存中的位置。这是错误:
Failure/Error: assigns(:rate_card_details).should eq([rate_card_detail])
expected: [#<RateCardDetail rate_card_id: 1, item_id: 1, rate: #<BigDecimal:7f82dcdb0ae0,'0.6941E2',18(18)>, created_at: "2013-06-05 18:12:53", updated_at: "2013-06-05 18:12:53">]
got: [#<RateCardDetail rate_card_id: 1, item_id: 1, rate: #<BigDecimal:7f82dc9a74d0,'0.6941E2',18(18)>, created_at: "2013-06-05 18:12:53", updated_at: "2013-06-05 18:12:53">]
2 个 BigDecimal 具有相同的值,但是是不同的对象。有没有办法让 rspec 在进行比较时将它们视为平等?