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 に答える