我怎么能测试条件验证?

时间:2011-09-17 17:25:57

标签: ruby-on-rails ruby ruby-on-rails-3 validation rspec

我正在使用Ruby on Rails 3.0.9和RSpec 2.我想知道我应该如何为以下验证方法运行测试:

class User < ActiveRecord::Base
  validates :firstname, :unless => :condition,
    :presence => true,
    ...
end

我的意思是:unless => :condition部分。

2 个答案:

答案 0 :(得分:9)

我假设您一直在Active Model上使用shoulda matchers来测试此类验证。

在这种情况下,你可以在你应该“断言”之前使用“subject”块来控制你测试验证的实例:(对于:除非情况)

context "testing validations" do
  subject do
    #Create object satisfying :condition
  end
  should_not validate_presence_of :first name
end

以及上述的对象案例。

答案 1 :(得分:3)

通过创建满足或不满足条件的对象并查看它们是否有效/无效。