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匹配器。 –