में एक सहायक कल्पना से सत्र को एक्सेस करना मैं अपने ApplicationHelper में एक विधि होगा कि मेरे टोकरी में कोई आइटम नहीं हैrspec
module ApplicationHelper
def has_basket_items?
basket = Basket.find(session[:basket_id])
basket ? !basket.basket_items.empty? : false
end
end
यहाँ मेरी सहायक कल्पना मैं इस परीक्षण करने के लिए है कि यह देखने के लिए जाँच करता है कि है:
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
लेकिन जब मैं परीक्षण चलाने मैं
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:
प्राप्त इस डिबगिंग से मैं देखता हूँ कि सत्र को एक्शनडिस्पेच :: test.srocess में @ request.session से एक्सेस किया जा रहा है, और @request शून्य है। जब मैं अपने अनुरोध चश्मे से सत्र तक पहुंचता हूं तो @request ActionController :: TestRequest का एक उदाहरण है।
मेरा प्रश्न है क्या मैं एक सहायक स्पेस से सत्र ऑब्जेक्ट तक पहुंच सकता हूं? अगर मैं कर सकता हूँ, कैसे? और अगर मैं इस विधि का परीक्षण करने का सबसे अच्छा अभ्यास नहीं कर सकता हूं?
****अद्यतन* ***
यह मेरा कारखानों में include ActionDispatch::TestProcess
होने के लिए नीचे था। इसे हटाने में समस्या का प्रकार शामिल है।
फैक्टरीगर्ल का उपयोग करके और "एक्शनडिस्पेच :: टेस्टप्रोसेस" के बिना फ़ाइलों को संलग्न करने के लिए, 'छवि {रैक :: टेस्ट :: अपलोड किया गया File.new (' spec/factories/test.png ',' image/png ')} ' , देखें: https://gist.github.com/rugginoso/4079399 और https://github.com/gregbell/active_admin/issues/512 –