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,我的结果应该适当地改变. 这给你一个干净的隔离测试.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |