加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Rspec 2和Devise在Rails 3中测试助手

发布时间:2020-12-16 20:08:05 所属栏目:百科 来源:网络整理
导读:我的帮助程序代码看起来像这样(并且工作正常btw): module ProvidersHelper def call_to_review(provider) if user_signed_in? review = Review.find_by_provider_id_and_user_id(provider.id,current_user.id) link_to "Edit Your Review",edit_provider_re
我的帮助程序代码看起来像这样(并且工作正常btw):
module ProvidersHelper
  def call_to_review(provider)
    if user_signed_in? && review = Review.find_by_provider_id_and_user_id(provider.id,current_user.id)
      link_to "Edit Your Review",edit_provider_review_path(provider,review),:class => "call_to_review"
    else
      link_to "Review This Provider",new_provider_review_path(provider),:class => "call_to_review"
    end
  end
end

不幸的是,当我运行测试时,会产生以下错误:

undefined method `user_signed_in?' for #<ActionView::Base:0x00000106314640>
 # ./app/helpers/providers_helper.rb:3:in `call_to_review'

显然,当rspec运行测试时,Devise :: Controllers :: Helpers没有包含在我的助手中.任何可能有助于这项工作的建议?

编辑:提供更多的信息,我的spec_helper有这样的:

config.include Devise::TestHelpers,:type => :controller
config.include Devise::TestHelpers,:type => :view
config.include Devise::TestHelpers,:type => :helper

(可悲的是,我无法使用它:type => [:controller,:view,:helper])

无论如何,我相信这些行将sign_in(scope,object)(和其他)测试助手添加到您的测试中.他们不会添加您在控制器/视图代码中实际利用的帮助器.

解决方法

我认为rspec的理念是尽可能全面地测试视图/帮助者/模型.所以在这种情况下,我会存根user_signed_in?并返回false或true,我的结果应该适当地改变. 这给你一个干净的隔离测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读