2011-06-15 71 views
6

我有以下測試通過:如何設置會話哈希以便在Rails 3中進行測試?

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

而不是增加, { :var_name => 1 }每個HTTP調用的,我怎麼會話添加到設置方法?

謝謝!

回答

11

在控制器測試中,您可以像訪問session那樣訪問flash

這裏只是一個輔助我使用的設置程序的ID

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] 
+0

哇,那很簡單。我應該嘗試過。我希望有人發現這個問題很有用! – 2011-06-15 22:12:35

相關問題