rspec assigns() не работи

Здравейте, попаднах на този проблем, тествам помощника си и той трябва да зададе променлив екземпляр, но при тест, когато използвам assigns, той винаги връща нула

Ето моят помощник:

def popup_campaign
    return "" if cookies["hide_popup_campaign"] == "1"
    popup = PopupCampaign.current(current_locale)
    @popup_campaign = popup.exists? && popup.first.active ? popup.first : false
    puts @popup_campaign # just cheking

    render :partial => 'layouts/shared/popup_campaign'
  end

и ето теста

it "should return valid instance" do
      popup.save(:validate => false)
      helper.request.cookies["hide_popup_campaign"] = "0"
      helper.stub(:current_locale).and_return("lv")
      helper.popup_campaign
      expect(assigns(:popup_campaign)).to be_present
    end

и конзолен дневник:

PublicHelper
  popup_campaign
#<PopupCampaign:0x0000010bb64cc8>
    should return valid instance (FAILED - 1)

неуспех:

 1) PublicHelper popup_campaign should return valid instance
     Failure/Error: expect(assigns(:popup_campaign)).to be_present
       expected present? to return true, got false

Може ли някой да ми каже какво правя грешно? Благодаря ти :)


person user2945241    schedule 10.05.2014    source източник
comment
Въз основа на описанието на примера изглежда, че грешката, която получавате, е за различен пример/тест, въпреки че кодът на очакванията е същият.   -  person Peter Alfvin    schedule 12.05.2014
comment
това е просто моето лошо копие/паса!   -  person user2945241    schedule 12.05.2014


Отговори (1)


Не намерих как да присвоя променливи на екземпляр от помощници. Вместо това преработих кода, за да не използвам екземпляра изобщо, и тествах дали частично се изобразява или не!

нещо като това:

def popup_campaign
    return "" if cookies["hide_popup_campaign"] == "1"
    popup = PopupCampaign.current(current_locale)
    campaign = popup.exists? && popup.first.active ? popup.first : false

    render :partial => 'layouts/shared/popup_campaign', locals: {popup: campaign} if campaign
end

Тест:

it "should render" do
      popup.save(:validate => false)
      helper.request.cookies["hide_popup_campaign"] = "0"
      helper.stub(:current_locale).and_return("lv")
      expect(helper.popup_campaign).to render_template('layouts/shared/popup_campaign') # or not_to 
    end
person user2945241    schedule 12.05.2014