看看这个辅助函数:
def show_welcome_banner?
(controller_name == 'competition' && action_name == 'index') ||
(controller_name == 'submissions' && action_name == 'show')
end
它需要定义controller_name和action_name函数。
我试图在我的RSpec匹配器中使用它:
describe PageHelper do
it "should know when the welcome banner is to be shown" do
helper.stub!(:controller_name).and_return('index')
show_welcome_banner?.should == false
end
end
但这不会真的奏效。
我怎样才能将帮助器中的函数存根?也许使用instance_eval? 谢谢!
修改下, 试图使用
controller.stub!(:controller_name).and_return('index')
但得到了
1) PageHelper should know when the welcome banner is to be shown
Failure/Error: show_welcome_banner?.should == false
NameError:
undefined local variable or method `controller_name' for #<RSpec::Core::ExampleGroup::Nested_1:0x1059a10b8>
# ./app/helpers/page_helper.rb:16:in `show_welcome_banner?'
# ./spec/helpers/page_helper_spec.rb:7
帮助器放在 spec / helper / page_helper_spec.rb ..
答案 0 :(得分:4)
你试过吗
stub!(:controller_name).and_return('index')
似乎对我有用:)。
答案 1 :(得分:0)
你在Rspec中尝试过类似的东西吗?
controller.stub!(:controller_name).and_return('index')
帮助程序只是包含在ApplicationController
中的模块。我相信该方法来自ActionController::Base
。
答案 2 :(得分:0)
rspec-rails 3.5
allow(helper).to receive(:controller_name) { 'submissions' }