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

时间:2011-03-21 04:12:24

标签: ruby-on-rails rspec stub

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

使用RSpec测试sort_link方法时(在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 个答案:

答案 0 :(得分: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