2011-03-21 88 views
6

我的ApplicationController通过使用helper_method :sort_direction向视图模板公开了一种方法(例如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> 

回答

6

大卫赫利姆斯基这里解决了这个问题:http://groups.google.com/group/rspec/browse_thread/thread/cc44ca12c6816053

在规范只需调用帮助对象上的所有方法:

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

这是现在用rspec 3更新:'allow(helper).to receive(:sort_direction)'http://www.relishapp.com/rspec/rspec-mocks/v/3-1/docs/basics/allowing-messages – 2014-12-16 14:22:06

相关问题