好的,我正在编写性能测试,并且无法像在集成测试中那样保持会话持续存在。据我所知,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
这里发生了什么?我已经尝试了多种方式来获得用户会话(创建,发布等),似乎没有任何工作。这是我第一次写性能测试,所以我可能做了一些愚蠢的事......
BTW:我在Debian Squeeze上运行Ruby 1.8.7,Rails 2.2.2。
答案 0 :(得分:1)
您必须像集成测试一样设置性能测试。
尝试使用帖子登录:
post "user_session", :user_session => {:login => "user", :password => "password"}
答案 1 :(得分:0)
不确定您的设置中有什么,但您也缺少require 'test_helper'
。如果这个方法在那里,或者在Authlogic测试助手中,你可能必须确保包含它。