rspec присваивает () не работает

Привет, я столкнулся с этой проблемой, я тестирую свой помощник, и он должен установить экземпляр, который можно использовать, но в тесте, когда я использую, он всегда возвращает ноль.

Вот мой помощник:

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