如何在RSpec中测试空白/空字符串以进行包含验证?

时间:2014-09-25 11:37:40

标签: ruby-on-rails ruby-on-rails-4 rspec-rails rspec3

我的验证确保必填字段只能设置为AR

在模特:

validates :status_code, inclusion: { in: %w(A R) }

在RSpec中,我有以下规范:

it { expect(@car).to allow_value("A", "R").for(:status_code) }
it { expect(@car).to_not allow_value(nil, "").for(:status_code) }

第一个RSpec通过,但我在第二个RSID上出错:

Failure/Error: it { expect(@car).to_not allow_value(nil, "").for(:status_code) }
       Expected errors  when status_code is set to "", got no errors

我错过了什么?我使用的是RSpec 3.1。

1 个答案:

答案 0 :(得分:2)

内置验证器接受布尔选项:allow_blank:allow_nil来控制当值为这两者之一时它应该如何表现。试试这个:

validates :status_code, inclusion: { in: %w(A R), allow_blank: false, allow_nil: false }

它可能也可以添加一个存在验证器来处理nil和空字符串:

validates :status_code, inclusion: { in: %w(A R) }, presence: true