我正在尝试测试我的控制器,但我的控制器中的一些操作希望用户登录。我将如何测试它们?我是否直接使用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
这是测试这些操作的方法吗?我错过了什么吗?
答案 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)
您可以在设置中制作虚假用户凭据,也可以使用模拟库存根检查凭据的方法。我已经做到了,并没有坚定的偏好。