在rspec中,如何测试哪个属性未通过严格验证。我只能测试是否抛出了“ActiveModel :: StrictValidationFailed”异常。
这是一个例子:
it "should not be valid if the asset already exists" do
n = Factory.build( :private_attached_asset, :asset => Rack::Test::UploadedFile.new( "test.pdf", 'application/pdf' ))
expect { n.save }.should raise_error(ActiveModel::StrictValidationFailed)
#n.should have(1).error_on(:checksum)
end
注释掉的行再次抛出异常。
答案 0 :(得分:1)
您无法检查严格验证的错误消息,因为它们会立即引发并且不会设置errors
对象。或者,您可以测试引发的确切错误消息:
expect { n.valid? }.to raise_error(ActiveModel::StrictValidationFailed, 'Exact message thrown')