Приложение Rails 3 работает, тест интеграции не проходит: как решить проблему с cookie? - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть простое приложение на Rails 3: нет моделей, один вид и один контроллер с одним методом index, который создает статический контент.Это работает нормально: когда я вручную вижу '/', я вижу свой статический контент.

Затем я добавил интеграционный тест:

# myproj/test/integration/routes_test.rb
class RoutesTest < ActionController::IntegrationTest
  test 'default_route' do
    get '/'
    assert_response :success, @response.body
  end
end

При запуске этого теста через rake онговорит мне, что GET '/' отвечает с 500. Изучение выходных данных журнала показывает это сообщение в теле ответа:

A secret is required to generate an integrity hash for cookie session
data. Use config.secret_token = "some secret phrase of at least 30
characters" in config/initializers/secret_token.rb

Конечно, secret_token.rb существует и содержит правильно отформатированный секрет (он был сгенерированСам Rails 3.)

Кто-нибудь знает, как включить интеграционное тестирование в Rails 3?Я предполагаю, что, возможно, мне нужно установить некоторые другие параметры конфигурации, чтобы мое приложение могло принимать интеграционные тесты.

1 Ответ

1 голос
/ 08 апреля 2011

Вам необходимо включить сгенерированный Rails файл test_helper.rb. Он содержит магию, необходимую для проведения интеграционного тестирования.

В ваших тестовых файлах добавьте строку:

require File.join( File.dirname( __FILE__ ), '../test_helper.rb' )

Путь '../test_helper.rb' выше должен быть относительно тестового файла, который его включает.

К вашему сведению: Выше приведена идиома Ruby для включения файлов с относительными путями (например, #include "../foo.h" в C.) Если вы используете Ruby 1.9.x, вы можете использовать более простую форму:

require_relative '../test_helper.rb'
...