Ruby on rails rspec-如何检查允许为空是否存在

Ruby on rails rspec-如何检查允许为空是否存在,ruby-on-rails,ruby,validation,activerecord,rspec,Ruby On Rails,Ruby,Validation,Activerecord,Rspec,我对唯一性进行了测试,该测试有效: it { should validate_uniqueness_of(:name).case_insensitive } 然而,当我尝试对name做类似的测试时,它失败了 it { should validate_presence_of(:name).allow_blank } 我得到了这个错误:未定义的方法允许空白'`根据,shoulda中没有可以链接的方法来验证它的存在,它将支持您想要做的事情。 看一看 但是,您可以使用另一个匹配器: it {

我对唯一性进行了测试,该测试有效:

it { should validate_uniqueness_of(:name).case_insensitive }
然而,当我尝试对name做类似的测试时,它失败了

it { should validate_presence_of(:name).allow_blank }    
我得到了这个错误:
未定义的方法
允许空白'`

根据,shoulda中没有可以链接的方法来验证它的存在,它将支持您想要做的事情。 看一看

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

it { should allow_value("", nil).for(:name) }
测试是否可以将空白值应用于属性

届时,将进行全面测试

it { should validate_presence_of(:name) }    
it { should allow_value("", nil).for(:name) }

好了,没有匹配符来匹配
allow\u blank
,所以您可以使用
allow\u value(@subject.name.blank?
或类似的东西


顺便说一句,我从不使用验证方法本身来测试模型验证,因为您实际上测试的是错误的东西。我使用正在讨论的模型的创建来测试它们,传递有效或无效的参数。这将在真实世界条件下更准确地测试模型。

没有allow_blank matcher:#@PETERBROWN的未定义方法'allow_blank',我看到我从问题中复制了
。allow_blank
方法。已将其编辑掉,所以现在应该是正确的。这不再有效,因为的
validate\u presence\u预计将出现一个空格失败:/