Почему мой сеанс истекает при использовании PerformanceTest, а не IntegrationTest? - PullRequest
6 голосов
/ 12 ноября 2009

ОК, я пишу тесты производительности и у меня возникают проблемы с сохранением моего сеанса, как это происходит в интеграционных тестах. Насколько я понимаю, 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

Что здесь происходит? Я пробовал несколько способов получить сеанс пользователя (создать, опубликовать и т. Д.), Но ничего не работает. Это первый раз, когда я пишу тесты производительности, поэтому я, вероятно, делаю глупости ...

Кстати: я использую Ruby 1.8.7, Rails 2.2.2 на Debian Squeeze.

Ответы [ 2 ]

1 голос
/ 14 октября 2010

Вы должны настроить свои тесты производительности как ваши интеграционные тесты.

Попробуйте войти, используя сообщение:

post "user_session", :user_session => {:login => "user", :password => "password"}
0 голосов
/ 24 июня 2011

не уверен, что там у вас в настройках, но вам также не хватает require 'test_helper'. Если этот метод используется там или в помощнике по тестированию Authlogic, возможно, вам придется убедиться, что он включен.

...