2013-05-01 43 views
9

Tôi có một thử nghiệm rspec đăng lên một hành động. Trong hành động, biến phiên được đặt chắc chắn, tuy nhiên trong kiểm tra bộ điều khiển của tôi, băm phiên bị trống. Làm thế nào để kiểm tra trong một thử nghiệm Rspec để xem nếu bộ điều khiển thiết lập biến phiên với giá trị đúng?Kiểm tra Rspec nếu một biến phiên được đặt trong một hành động điều khiển

+0

Vậy nguyên nhân thực sự của việc này là gì? (kể từ khi bạn đánh dấu một câu trả lời nhưng không thực sự giải thích) – lulalala

+0

Câu trả lời là đúng cho câu hỏi tôi đã hỏi, nhưng vấn đề của tôi đã không liên quan đến câu hỏi của tôi – chris

Trả lời

15

Bạn có thể truy cập phiên trực tiếp trong rspec như thế này: session[:key]. Chỉ cần so sánh điều đó với giá trị bạn muốn.

+1

xin lỗi tôi đoán tôi nên nói những gì đã thử. tôi đã thử điều đó, nhưng phiên họp trống. spec có một phiên trống nhưng sử dụng bộ điều khiển theo cách thông thường, nó hoạt động – chris

+1

@ Chris, tôi đã làm điều đó nhiều lần vì vậy tôi biết nó hoạt động. Vui lòng dán mã nếu cần. –

0

Bạn có sử dụng bất kỳ before_filter nào trong bộ điều khiển của mình không? Đây có thể là trường hợp, nếu before_filter thay đổi luồng và mã của bạn bằng cách gán biến cho phiên đó thậm chí không được đánh giá.

Ví dụ bạn có thể có dòng này trong điều khiển của bạn:

# ... 
    before_filter :authenticate_user! 
# ... 

Điều đó có nghĩa nếu bạn chưa đăng nhập, bạn sẽ không bao giờ nhập bất kỳ phương pháp trong điều khiển này. Vì vậy biến số session sẽ trống.

3

Xem this. Vấn đề chính là biến số session không thể truy cập được từ mã thử nghiệm. Để giải quyết vấn đề này, hãy thêm các đường kẻ thù tại số spec/spec_helper.rb:

def session 
    last_request.env['rack.session'] 
end 
+0

điều này có lẽ là câu trả lời cho những gì đã thực sự sai tại thời điểm tôi đăng này. – chris

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