ページにユーザーを挿入しています (ページにはメンバーシップ テーブルを介して多くのユーザーがいます)。ロールが必要なため、失敗することが予想されます。メンバーシップのユーザー、ページ、およびロールに validate_presence_of があります(結合テーブル)。
私の問題は、例外がスローされるため、最後に到達する前にテストが中断することです。だから私はそれに「期待値上げ」を加えようと思った
it 'should not be valid without a role' do
user = FactoryGirl.build(:user)
expect { page.users << user }.to raise_error(ActiveRecord::RecordInvalid)
end
しかし、これはロールの欠如によってエラーが発生したことを実際にテストするものではありません (検証エラー: ロールが提供されていません)。これをテストするより良い方法はありますか?または、ユーザーを保存せずに page.users に設定し、ページが有効かどうかを確認する方法はありますか?
アップデート:
これも機能しません (例外は page.users << users、無効なアクティブ レコード、役割を提供する必要がある) でスローされます):
it 'should not be valid without a role' do
user = FactoryGirl.build(:user)
page.users << user
page.should have(1).error_on :role
end
更新 2:
私は答えを持っていると思います、これは今のところうまくいきます
it 'should not be valid without a role' do
user = FactoryGirl.build(:user)
expect { page.users << user }.to raise_error(ActiveRecord::RecordInvalid, /Role must be provided/)
end