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

时间:2011-04-15 09:13:23

标签: ruby-on-rails testing

我正在尝试测试我的控制器,但我的控制器中的一些操作希望用户登录。我将如何测试它们?我是否直接使用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

这是测试这些操作的方法吗?我错过了什么吗?

4 个答案:

答案 0 :(得分:1)

不确定我是否误解了,但Selenium或iMacros等网络测试软件是否有助于自动化此测试?它可以为您执行登录序列。

答案 1 :(得分:1)

The Book在其软件仓库应用程序中包含一些测试示例:

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

“验证用户”部分中的完整详细信息。

答案 2 :(得分:1)

根据您使用的身份验证框架,有几种方法。例如,Devise有一些TestHelper,可以轻松登录用户而无需通过功能测试中的实际网页。如果那不是一个选项,比如齐普说,浏览器测试。 (看,从高到低:黄瓜,水豚,硒/...)

答案 3 :(得分:0)

您可以在设置中制作虚假用户凭据,也可以使用模拟库存根检查凭据的方法。我已经做到了,并没有坚定的偏好。