10

Hãy xem xét các thử nghiệm tích hợp sau đây:Cách truy cập phiên từ Kiểm tra tích hợp Rails?

test "if there is no user in session, redirect to index and flash message" do 
    open_session do |sess| 
    post '/login', :email => users(:client).email, :password => 'rumpelstiltskin' 
    sess[:user] = nil 
    get '/user_page' 
    assert_redirected_to index_path 
    assert_equal "Your session has expired. Please log in again", flash[:notice] 
    end  
end 

này tạo ra lỗi: undefined method '[]='

Và, thay đổi để sess.session[:user] = nil tạo ra một lỗi cũng như: NoMethodError: undefined method 'session' for nil:NilClass

Làm thế nào để bạn sửa đổi params phiên từ một hội nhập kiểm tra trong Rails?

Làm việc trong Rails 3.0.7, Ruby 1.9.2p180, Khung kiểm tra đơn vị.

CHỈNH SỬA:
get '/user_page', nil, {:user => nil}10 và get ('/user_page', nil, {:user => nil}) phát sinh lỗi.

+0

Bài kiểm tra thử nghiệm hoặc tích hợp đơn vị này phải không? :) – Rimian

Trả lời

2

Chỉ cần sử dụng session[:user] mà không open_session khối

+1

'phiên [: người dùng] = nil' không vượt qua phiên được cập nhật cho bộ điều khiển. –

+0

hoạt động trong đường ray 2, chứ không phải đường ray 3 (là phiên bản đang được sử dụng trong câu hỏi). –

+0

hoạt động tốt cho tôi với minitest và đường ray 3.1 – NARKOZ

2

Nó chỉ ra rằng nó dường như không thể làm được điều này.

+0

Câu trả lời của @NARKOZ hoạt động tốt với đường ray 3 – pahnin

3

Trong Rails 3.2.3 sau dường như làm việc cho tôi:

# Hit the root_path to start our session 
get root_path 

# A helper method to set our session 
login_as(@user_fixture) 

# Now we can access the session variable 
assert session[:user_id] 

Không chắc chắn nếu điều này sẽ làm việc cho bạn, vì vậy Goodluck!

-1

Đây không phải là những thử nghiệm tích hợp được thiết kế cho. Bạn không nên sửa đổi phiên trực tiếp, thay vào đó bạn nên nhấn đường dẫn/đăng xuất của mình.

+2

Có, nhưng câu hỏi là về truy cập 'phiên'. –

+0

@BorisStitnicky - Có, và tôi đã nói không truy cập phiên, nó sai. Tôi đã viết điều này 2 năm trước, nhưng tôi nghĩ rằng tôi vẫn đứng đó. – superluminary

Các vấn đề liên quan