有时在我的测试中,我会比较两个用户对象:
transaction.sender.should == user1
Rspec 给了我一些输出,显示对象具有相同的 id(和其他参数)但具有不同的对象 id:
Failure/Error: tx.sender.reload.should == @u1.reload
expected: #<User _id: 5030afb4f8182bb3a9000005, ...>
got: #<User _id: 5030afb4f8182bb3a9000005, ...> (using ==)
Diff:#<User:0x007fc0c7e56cf0>.==(#<User:0x007fc0c7ec53f8>) returned false even though the diff between #<User:0x007fc0c7e56cf0> and #<User:0x007fc0c7ec53f8> is empty. Check the implementation of #<User:0x007fc0c7e56cf0>.==.
我不确定这是为什么。我假设 diff 行上显示的用户 id 意味着它是对象的不同实例,但 Mongoid 应该检查 _id 参数是否相等,对吗?我正在使用 Mongoid 2.4.12。
我认为如果对象已过时但结果相同,这可能会有所帮助:
transaction.sender.reload.should == user1.reload
我现在已经开始这样做了,但我担心可能还有其他事情发生。
transaction.sender.id.should == user1.id
谢谢!