Заглушка метода помощника контроллера в спецификации помощника шаблона - PullRequest
6 голосов
/ 21 марта 2011

My ApplicationController предоставляет метод (например, sort_direction) для шаблонов представления с помощью helper_method :sort_direction. Затем я использую этот метод в другом методе (например, sort_link) помощника вида (application_helper.rb).

При тестировании метода sort_link с помощью RSpec (в application_helper_spec.rb) мне нужно заглушить sort_direction, так как тест, кажется, выполняется полностью независимо от контроллеров (и, таким образом, благодаря методам представления шаблонов представления).

К сожалению, я не смог узнать, как заглушить этот sort_direction метод контроллера. Я всегда получаю "неопределенный метод".

Вот что я попробовал (внутри application_helper_spec.rb):

helper.stub(:sort_direction)
controller.stub(:sort_direction)
view.stub(:sort_direction)
self.stub(:sort_direction)

Любые предложения, как я могу заглушить этот метод?

Вот ошибка, которую я получаю:

NoMethodError:
       undefined method `sort_direction' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xb641434c>

1 Ответ

6 голосов
/ 22 марта 2011

Дэвид Челимский решил эту проблему здесь: http://groups.google.com/group/rspec/browse_thread/thread/cc44ca12c6816053

Просто вызовите в спецификации все методы объекта-помощника:

it "should work" do
   helper.stub(:sort_direction)
   helper.sort_link(...).should == ...
end
...