首页 文章

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

提问于
浏览
1

我的验证确保必填字段只能设置为 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通过,但我在第二个得到错误:

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 回答

  • 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
    

相关问题