如何使用条件测试验证?

时间:2011-08-31 14:09:19

标签: ruby-on-rails ruby-on-rails-3 unit-testing rspec rspec2

我应该如何使用这样的条件测试验证:

validates :age, :numericality => true, :if => :age?

这就是我现在所拥有的:

before(:each) do
  @attr = { :age => "30" }
end

it "should require a age if present" do
   Model.new(@attr.merge(:age => "foo").should_not be_valid
end

错误信息是:

expected valid? to return false, got true

但是这样做,if不会被评估。

2 个答案:

答案 0 :(得分:2)

您是否尝试过:allow_nil => true而不是:if条件?

答案 1 :(得分:1)

你真的写过一个名为“年龄?”的方法吗? ?

我认为你想要做的事实上是:

 validates :age, :numericality => true, :allow_nil => true