Tôi muốn đăng xuất một người dùng đã đăng nhập (với Devise/Warden) bằng cách sử dụng mspec mocks trong một bộ thử nghiệm Capybara trong ứng dụng Rails của tôi. Điều này sẽ tiết kiệm rất nhiều thời gian và điều đó có nghĩa là bộ thử nghiệm của tôi có thể/sẽ được chạy thường xuyên.Làm thế nào để Stub out Warden/Devise với Rspec trong thử nghiệm Capybara
Trước đây tôi đã có thể làm điều này bằng authlogic bởi loại bỏ dần từng mô hình phiên của tôi với một số mã như thế này:
def login(user)
user_session = mock_model(UserSession, {:user => user})
UserSession.stub(:find).and_return(user_session)
end
Bây giờ mà tôi đang sử dụng lập mưu, tôi không còn được tiếp cận với một đối tượng UserSession. Và vì tôi đang sử dụng capybara để kiểm tra mã của mình, tôi không có quyền truy cập trực tiếp vào đối tượng yêu cầu để sử dụng trình trợ giúp thử nghiệm được xây dựng trong số sign_in
của nhà phát triển.
Câu hỏi của tôi là: làm thế nào tôi có thể mô phỏng người dùng đã đăng nhập bằng capybara, devise và spec mocks mà không yêu cầu mọi kịch bản với người dùng đã đăng nhập trước tiên đi tới đường dẫn đăng ký, điền vào biểu mẫu, gửi, đợi để trả lời, và sau đó đi đến trang mong muốn?
Không phải những gì bạn hỏi, nhưng chỉ trong trường hợp [login.rb] (https://github.com/gitlabhq/gitlabhq /blob/master/spec/support/login.rb) và [sample_use.rb] (https://github.com/gitlabhq/gitlabhq/blob/master/spec/requests/dashboard_issues_spec.rb) – clyfe
Cảm ơn bạn đã phản hồi , Tôi đã có một cái gì đó như thế mà tôi đang cố gắng tránh. Mặc dù nhận xét của bạn chắc chắn hữu ích cho những khách truy cập trong tương lai có thể không. – Schneems