如何测试要求用户登录的操作?

| 我正在尝试测试控制器,但是控制器中的某些操作要求用户登录。我将如何测试它们?我会直接弄乱
session
变量吗?另外,如果许多操作都希望用户登录,该怎么办?我应该设置一个先行动作,然后在其中登录用户吗? 我的另一个想法是,在实际测试所需的操作之前,我可以在集成测试中对其进行测试,并在登录表单上进行发布。就像是:
def setup
  # log the user in, this will happen before every test
end

# integration test
test \"I should see my posts\" do
  #setup should have happened before this, and I should be logged in
  get posts_path
  assert ...
end
这是测试这些动作的方法吗?我想念什么吗?     
已邀请:
根据您使用的身份验证框架,有几种方法。例如,Devise有一些TestHelper,可以轻松登录用户而无需在功能测试中浏览实际的网页。如果那不是一个选择,例如soundsop所说的,那就是浏览器测试。 (从高到低看:黄瓜,水豚,硒/ ...)     
本书在其仓库应用程序中包含一些测试示例:
test \"should login\" do
  dave = users(:one)
  post :create, :name => dave.name, :password => \'secret\'
  assert_redirected_to admin_url
  assert_equal dave.id, session[:user_id]
end
“验证用户”部分中的完整详细信息。     
您可以在设置中创建伪造的用户凭据,也可以使用模拟库将检查凭据的方法存根。我都做过,也没有坚定的偏好。     

要回复问题请先登录注册