Ruby on rails rspec/shoulda无法比较两个看似相同的集合

Ruby on rails rspec/shoulda无法比较两个看似相同的集合,ruby-on-rails,rspec,Ruby On Rails,Rspec,(提到shoulda,因为我知道它在Gemfile中-但不知道它如何影响rspec测试,没有经验,不知道它是否涉及到这里) 我有两个[控制器]测试: 第一: 它{应该将_分配给(:messages)( 当前_user.messages.ordered.detain)} 第二: 它{应该将_分配给(:messages)( 当前用户.messages.order(“send\u at DESC”).decoration} 注:message.rb定义: scope :ordered, ord

(提到
shoulda
,因为我知道它在Gemfile中-但不知道它如何影响rspec测试,没有经验,不知道它是否涉及到这里)

我有两个[控制器]测试:

第一:

它{应该将_分配给(:messages)( 当前_user.messages.ordered.detain)}

第二:

它{应该将_分配给(:messages)( 当前用户.messages.order(“send\u at DESC”).decoration}

注:message.rb定义:

scope :ordered,     order( 'messages.send_at DESC' )
,所以他们测试的是完全相同的东西-除了用于按错误字段排序的
排序的
方法,第一个测试总是通过,预期的集合与实际的集合相同;因此,第二个测试明确要求正确的排序顺序

现在,疯狂:第一次测试通过,第二次测试失败。Rspec打印:

 Expected action to assign #<DecoratedEnumerableProxy of
 MessageDecorator for [#<Message id: 1, ... >, <Message id: 2, ...>]>,
 but got #<DecoratedEnumerableProxy of MessageDecorator for [#<Message
 id: 1, ... >, <Message id: 2, ...>]>
预期要分配的操作#,
但是得到#
您猜对了-这里打印的“预期…”和“但得到…”部分完全相同。我已经用diff对它们进行了三次检查。如果两个测试都失败了,我就不会那么困惑了,但是第一个通过了,第二个失败了。我怀疑第一个测试肯定产生了某种副作用,但不,重新排序或注释其中一个测试并没有改变任何东西


有什么想法吗?

我很惊讶没有人回答这个问题,这让我很好奇。预期/实际项目的RSspec打印输出明显汇总。你试过把它们打印得更详细吗?哦,是的,我把它们打印得一模一样,而且它们实际上是一样的。我对它们进行了区分——它们不是太大,但太大了,放不进去。只要相信我的话(=)和diff's。我已经三次检查过了。你试过打印每个的
对象\u id
吗?我没有-不过,一旦我有时间回到那个问题上来,我会试试。。然而,这似乎违反了配对者的直觉——在这方面,让一个测试与另一个测试表现不同仍然是很奇怪的。但是,是的,我会记得那样做。