我的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>
答案 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