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

时间:2013-08-29 06:30:13

标签: ruby-on-rails rspec

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

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

第一

  

it {should assign_to(:messages).with(   current_user.messages.ordered.decorate)}

和第二:

  

it {should assign_to(:messages).with(   current_user.messages.order(“send_at DESC”)。decorate)}

注意:message.rb定义:

scope :ordered,     order( 'messages.send_at DESC' )

,所以他们正在测试完全相同的东西 - 除了用于按错误字段排序的ordered方法,并且第一个测试总是通过,预期集合与实际相同;因此第二次测试明确要求正确的排序顺序。

现在,疯狂:第一次测试通过,第二次测试失败。 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, ...>]>

你猜对了 - 这里打印的“预期......”和“但得到......”部分完全相同。我用差异三重检查了它们。如果两个测试都失败了,我就不会那么困惑,但第一个通过,第二个失败。我怀疑第一次测试必须产生某种副作用,但不,重新排序或评论其中一项测试不会改变任何东西。

有什么想法吗?

0 个答案:

没有答案