0

在 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

注释掉的行再次引发异常。

4

1 回答 1

1

您无法检查严格验证的错误消息,因为它们会立即引发并且不设置errors对象。或者,您可以测试引发的确切错误消息:

expect { n.valid? }.to raise_error(ActiveModel::StrictValidationFailed, 'Exact message thrown')
于 2012-07-11T04:31:24.263 回答