Как настроить хэш сессии в настройках для тестов в Rails 3? - PullRequest
6 голосов
/ 15 июня 2011

У меня есть следующий тест, который проходит:

test "should create order" do
    assert_difference('Order.count') do
      post :create, { :message_text => @order.attributes }, { :var_name => 1 }
  end

Вместо добавления , { :var_name => 1 } к каждому HTTP-вызову, как добавить сеанс в метод настройки?

Спасибо!

1 Ответ

11 голосов
/ 15 июня 2011

Внутри теста контроллера вы можете получить доступ к session точно так же, как вы можете flash.

вот помощник, который я использую для установки идентификатора программы

def set_current_program(program=programs(:direct_debit))
  @current_program = program
  session[:program_id] = @current_program && @current_program.id
end

или в настройке, вы можете сделать

def setup
  session[:var_name] = 1
end

, а затем просто выполнить свой тест как обычно

test "should create order" do
  assert_difference('Order.count') do
    post :create, :message_text => @order.attributes
  end
end

Вы можете даже утверждать значение сеанса, если действие должно было изменить его

assert_equal 24, session[:something_changed]
...