0
我在測試用戶之間的聊天內容。我使用的RSpec和FactoryGirl爲什麼rails中的「where」查詢返回不同的對象?
,這不是通過測試:
it "creates a chat if one does not exist" do
bob = create(:user, username: "bob")
dan = create(:user, username: "dan")
new_chat = Chat.create(user_id: @dan.id, chatted_user_id: bob.id)
expect(Chat.where("chatted_user_id = ?", bob.id).first).to equal(new_chat)
end
失敗消息稱:
Failure/Error: expect(Chat.where("chatted_user_id = ?", bob.id).first).to equal(new_chat)
expected #<Chat:70120833243920> => #<Chat id: 2, user_id: 2, chatted_user_id: 3>
got #<Chat:70120833276240> => #<Chat id: 2, user_id: 2, chatted_user_id: 3>
Compared using equal?, which compares object identity,
but expected and actual are not the same object. Use
`expect(actual).to eq(expected)` if you don't care about
object identity in this example.
爲什麼我的查詢返回不同的對象ID?
謝謝西蒙娜!那麼==和eq一樣嗎?他們是否只是檢查對象的「價值」?另外,你能否提出有關ActiveRecord實例的更多信息? –
是的,'eq'是'=='的RSpec匹配器。 –