Ich habe eine Methode in meinem ApplicationHelper, dass alle Einzelteile in meinem KorbZugriff auf Sitzung von einem Helfer spec in rspec
module ApplicationHelper
def has_basket_items?
basket = Basket.find(session[:basket_id])
basket ? !basket.basket_items.empty? : false
end
end
dies hier ist mein Helfer spec, die ich habe zu prüfen sind, ob es überprüft,:
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
aber wenn ich den Test ausführen ich erhalte
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:
Von diesem Debuggen ich sehe, dass Sitzung wird in ActionDispatch :: TestProcess von @ request.session zugegriffen, und @ request ist Null. Wenn ich über meine Anfrage auf die Sitzung zugreife, ist @request eine Instanz von ActionController :: TestRequest.
Meine Frage ist, kann ich auf das Session-Objekt von einer Helper-Spezifikation zugreifen? Wenn ich kann, wie? Und wenn ich nicht weiß, was die beste Methode ist, um diese Methode zu testen?
****UPDATE* ***
Dies war nach unten include ActionDispatch::TestProcess
in meinen Fabriken zu haben. Durch das Entfernen dieses Include wird das Problem sortiert.
Verwenden Sie zum Anhängen von Dateien mit FactoryGirl und ohne "ActionDispatch :: TestProcess": 'image {Rack :: Test :: UploadedFile.new ('spec/facilities/test.png', 'image/png')}' , siehe: https://gist.github.com/rugginoso/4079399 und https://github.com/gregbell/active_admin/issues/512 –