如果我有一个使用Devise认证的用户模型User,只有那些拥有角色:admin的用户可以查看某个url,我该如何编写RSpec集成测试来检查该url的状态是否为200?
def login(user)
post user_session_path, :email => user.email, :password => 'password'
end
这在回答请求规范中存根认证问题时似乎被建议过,但我无论如何都无法让它与 devise 一起工作。当检查权限时,CanCan 收到了一个空的用户,该用户没有正确的权限。
在集成规范中无法访问控制器,因此我无法存根 current_user,但我想做类似于这样的事情。
describe "GET /users" do
it "should be able to get" do
clear_users_and_add_admin #does what it says...
login(admin)
get users_path
response.status.should be(200)
end
end
注意!!!: 自问题提出以来,一切都已经改变。当前最好的方法可以在这里找到:http://github.com/plataformatec/devise/wiki/How-To:-Test-with-Capybara