我在页面中插入用户(页面中有许多用户通过成员资格表),我希望它因为需要角色而失败。我对成员资格(联接表)上的用户,页面和角色都有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中设置用户而不保存它,然后检查页面是否有效?
更新
这也不起作用(在页面上抛出异常。用户&lt;&lt;用户,无效的活动记录,必须提供角色):
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
答案 0 :(得分:1)
你应该检查Shoulda-matchers gem。
您也可以尝试使用语法:
it { should have(1).error_on :role }
基本上您可以访问规范中的错误,并且可以检查您想要的字段中是否存在错误。