RSpec在验证存在时引发异常

时间:2013-06-24 23:01:30

标签: ruby validation rspec associations rspec2

我有一个模型(讨论),其中包含另一个模型(可见性)。讨论模型的before_validation :on => :create调用是在visibility上设置一个值,即:

class Discussion
  has_one :visibility

  validates_presence_of :some_unrelated_field

  before_validation :set_visibility_relationship, :on => :create

  private

  def set_visibility_relationship
    visibility.some_entity = self.the_same_entity
  end
end

然后我在discussion_spec.rb

中有以下内容
it { should validate_presence_of(:some_unrelated_field) }

before_validation引发错误:

 Failure/Error: it { should validate_presence_of :some_unrelated_field }
 NoMethodError:
   undefined method `visibility.some_entity' for #<Discussion:0x007ff6ebc43170>

如果我为before_validation电话或should validate_presence_of注释了无关字段,我的所有测试都会通过。

我尝试使用pry,我发现在discussion.errors上设置的错误键之一是“visibility.some_entity”,而所有其他键都是基于属性的,例如:“some_unrelated_field”。似乎rspec中可能存在一些错误导致抛出此错误,但我也可能做错了。

1 个答案:

答案 0 :(得分:0)

看起来它实际上是与shoulda-matcher 2.0.0的问题。升级到2.2.0版解决了这个问题。