rspec - 如何检查allow_blank是否存在

Mic*_*ant 3 ruby validation activerecord rspec ruby-on-rails

我有一个独特的测试工作:

it { should validate_uniqueness_of(:name).case_insensitive }
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试对名称进行类似的测试时,它会失败

it { should validate_presence_of(:name).allow_blank }    
Run Code Online (Sandbox Code Playgroud)

我收到此错误:undefined methodallow_blank'`

Bea*_*rtz 10

根据这个列表,在shoulda中没有可以链接到validate_presence_of的方法,它可以支持你想要做的事情.在这里查看匹配器的源代码.

但是,您可以使用另一个匹配器:

it { should allow_value("", nil).for(:name) }
Run Code Online (Sandbox Code Playgroud)

哪个测试是否可以将空值应用于您的属性.

那么完整的测试就是

it { should validate_presence_of(:name) }    
it { should allow_value("", nil).for(:name) }
Run Code Online (Sandbox Code Playgroud)