首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在测试过程中对帮助程序中的函数进行存根

如何在测试过程中对帮助程序中的函数进行存根
EN

Stack Overflow用户
提问于 2011-05-08 11:24:55
回答 3查看 1.1K关注 0票数 3

请看一下这个助手函数:

代码语言:javascript
运行
复制
def show_welcome_banner?
  (controller_name == 'competition' && action_name == 'index') ||
  (controller_name == 'submissions' && action_name == 'show')
end

它期望定义controller_name和action_name函数。

我试着在我的RSpec匹配器中使用这个:

代码语言:javascript
运行
复制
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?谢谢!

编辑,尝试使用

代码语言:javascript
运行
复制
controller.stub!(:controller_name).and_return('index')

但得到

代码语言:javascript
运行
复制
  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..中

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-19 08:35:04

你试过吗

代码语言:javascript
运行
复制
stub!(:controller_name).and_return('index')

似乎为我工作过:)

票数 4
EN

Stack Overflow用户

发布于 2011-05-08 17:45:28

你在你的Rspec里试过这样的东西吗?

代码语言:javascript
运行
复制
controller.stub!(:controller_name).and_return('index')

帮助程序只是ApplicationController中包含的模块。我相信这种方法来自于ActionController::Base

票数 0
EN

Stack Overflow用户

发布于 2017-03-29 20:20:12

rspec-rails 3.5

代码语言:javascript
运行
复制
allow(helper).to receive(:controller_name) { 'submissions' }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5927132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档