Tôi có một phương pháp trong ApplicationHelper của tôi để kiểm tra để xem nếu có bất kỳ mục trong giỏ của tôiTruy cập vào phiên từ một spec helper trong rspec
module ApplicationHelper
def has_basket_items?
basket = Basket.find(session[:basket_id])
basket ? !basket.basket_items.empty? : false
end
end
Dưới đây là đặc tả helper của tôi mà tôi phải kiểm tra này:
require 'spec_helper'
describe ApplicationHelper do
describe 'has_basket_items?' do
describe 'with no basket' do
it "should return false" do
helper.has_basket_items?.should be_false
end
end
end
end
tuy nhiên khi tôi chạy thử nghiệm tôi nhận được
SystemStackError: stack level too deep
/home/user/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_dispatch/testing/test_process.rb:13:
Từ gỡ lỗi này tôi thấy rằng phiên đang được truy cập trong ActionDispatch :: TestProcess từ @ request.session và @request là không. Khi tôi truy cập phiên từ thông số yêu cầu của tôi @request là một cá thể của ActionController :: TestRequest.
Câu hỏi của tôi là tôi có thể truy cập đối tượng phiên từ thông số trợ giúp không? Nếu tôi có thể, làm thế nào? Và nếu tôi không thể thực hành tốt nhất để kiểm tra phương pháp này là gì?
****CẬP NHẬT* ***
Đây là xuống để có include ActionDispatch::TestProcess
tại các nhà máy của tôi. Loại bỏ điều này bao gồm sắp xếp sự cố.
Để đính kèm tệp bằng FactoryGirl và không có "ActionDispatch :: TestProcess", hãy sử dụng: 'image {Rack :: Test :: UploadedFile.new ('spec/factories/test.png', 'image/png')}' , xem: https://gist.github.com/rugginoso/4079399 và https://github.com/gregbell/active_admin/issues/512 –