在模板助手规范中存储控制器助手方法

Zar*_*doz 6 rspec ruby-on-rails stub

我通过使用ApplicationController方法(例如sort_direction)向视图模板公开了一个方法helper_method :sort_direction.然后,我在sort_link视图助手(application_helper.rb)的另一个方法(例如)中使用此方法.

sort_link使用RSpec(in 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)
Run Code Online (Sandbox Code Playgroud)

有什么建议我怎么可以存根那个方法?

这里得到的错误:

NoMethodError:
       undefined method `sort_direction' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xb641434c>
Run Code Online (Sandbox Code Playgroud)

Zar*_*doz 6

David Chelimsky在这里解决了这个问题:http://groups.google.com/group/rspec/browse_thread/thread/cc44ca12c6816053

只需调用helper对象上的spec所有方法:

it "should work" do
   helper.stub(:sort_direction)
   helper.sort_link(...).should == ...
end
Run Code Online (Sandbox Code Playgroud)