我在一個頁面中插入一個用戶(一個頁面有很多用戶通過成員表),並且我期望它失敗,因爲需要角色。我在用戶,頁面和成員資格角色(連接表)上都有validate_presence_of。如何測試插入一個has_many關係與規範?
我的問題是測試在到達結尾之前會中斷,因爲引發了異常。所以我想,我會添加一個「期望提高」它
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 < <用戶,無效的活動記錄,必須提供角色):
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
請告訴我們什麼'頁面'也是 –