6

好的,我正在编写性能测试,并且无法像在集成测试中那样让我的会话持续存在。据我了解,PerformanceTest 是 IntegrationTest 的子项,任何集成测试都应该与性能测试一起使用。但是,当我进行集成测试并将其复制到性能时,将 ActionController::IntegrationTest 更改为 ActionController::PerformanceTest 然后运行测试,它失败了。

我正在使用 Authlogic,并且没有遇到集成测试会话的问题。通过性能测试,虽然看起来会话已正确创建,但是当我访问“/reports”页面(这是一个受保护的页面)时,它会将我重定向到登录页面,就像根本没有用户会话一样。

require 'performance_test_help'

class SimpleTest < ActionController::PerformanceTest
  setup :activate_authlogic

  test "login" do
    assert user_session = UserSession.create!(User.find_by_login("admin"))

    get "/reports"
    assert_response :success
  end
end

这里发生了什么?我尝试了多种方法来获取用户会话(创建、发布等),但似乎没有任何效果。这是我第一次编写性能测试,所以我可能在做一些愚蠢的事情......

顺便说一句:我在 Debian Squeeze 上运行 Ruby 1.8.7、Rails 2.2.2。

4

2 回答 2

1

您必须像集成测试一样设置性能测试。

尝试使用 post 登录:

post "user_session", :user_session => {:login => "user", :password => "password"}
于 2010-10-14T14:06:20.590 回答
0

不确定您的设置中有什么,但您也丢失require 'test_helper'了。如果此方法在那里,或者在 Authlogic 测试助手中,您可能必须确保它被包含在内。

于 2011-06-23T23:34:17.750 回答