Что я делаю не так с этим вспомогательным тестом rspec? - PullRequest
3 голосов
/ 17 сентября 2009

Все, что я пытаюсь сделать, это указать, как должен вести себя однострочный вспомогательный метод для представления, но я не уверен, какой тип фиктивного объекта (если есть) мне следует создавать, если я работаю в Рельсы.

Вот код для events_helper.rb:

module EventsHelper

  def filter_check_button_path
    params[:filter].blank? ? '/images/buttons/bt_search_for_events.gif' : '/images/buttons/bt_refine_this_search.gif'
  end
end

А вот мой код спецификации в events_helper_spec.rb:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe EventsHelper do

  #Delete this example and add some real ones or delete this file
  it "should be included in the object returned by #helper" do
    included_modules = (class << helper; self; end).send :included_modules
    included_modules.should include(EventsHelper)
  end

  it "should return the 'refine image search' button if a search has been run" do

  # mock up params hash
    params = {}
    params[:filter] = true

   # create an instance of the class that should include EventsHelper by default, as the first test has verified (I think)
    @event = Event.new

  # call method to check output
    @event.filter_check_button_path.should be('/images/buttons/bt_search_for_events.gif')
  end

end

Когда я просматривал документы здесь - http://rspec.info/rails/writing/views.html, Я озадачен, откуда взялся объект 'template'.

Я также пытался посмотреть здесь, что, как мне казалось, указывало бы мне правильное направление, но, увы, никаких кубиков. http://jakescruggs.blogspot.com/2007/03/mockingstubbing-partials-and-helper.html

Что я здесь не так делаю?

Спасибо,

Chris

Ответы [ 3 ]

10 голосов
/ 02 октября 2009

Вы ничего не делаете в этой спецификации, просто устанавливаете заглушку, чтобы она прошла, но ничего не проверяла.

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe EventsHelper do
 it "should return the 'refine image search' button if a search has been run" do
  # mock up params hash
  params = {:filter => true}

  helper.stub!(:params).and_return(params)
  helper.filter_check_button_path.should eql('/images/buttons/bt_search_for_events.gif')
 end
end
1 голос
/ 13 мая 2012

Я запускаю тест без spec_helper (Ruby 1.9)

require_relative '../../app/helpers/users_helper'

describe 'UsersHelper' do 
  include UsersHelper

  ...
end
0 голосов
/ 18 сентября 2009

Ах,

Я задал этот вопрос в списке рассылки rspec, и одна добрая душа (спасибо Скотту!) Объяснила мне, что для этого есть удобный вспомогательный объект, который вы должны использовать вместо этого, например:

Rails имеет свою вспомогательную функцию params = {: filter => true} helper.stub! (: Титулы) .and_return (PARAMS)

Я сейчас обновил код так:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe EventsHelper do

  #Delete this example and add some real ones or delete this file
  it "should be included in the object returned by #helper" do
    included_modules = (class << helper; self; end).send :included_modules
    included_modules.should include(EventsHelper)
  end

  it "should return the 'refine image search' button if a search has been run" do

  # mock up params hash
    params = {}
    params[:filter] = true

    helper.stub!(:filter_check_button_path).and_return('/images/buttons/bt_search_for_events.gif')
  end

end

И это работает. Ура!

...