测试使用设计与RSpec的意见(Testing Views that use Devise with

2019-07-01 16:41发布

我试图让以前通过rspec的“视图规范”增加设计的后传user_signed_in? 方法所讨论的视图模板。 模板看起来是这样的:

<% if user_signed_in? %>
  Welcome back.
<% else %>
  Please sign in.
<% endif %>

通过视图规格看起来是这样的:

require "spec_helper"

describe "home/index.html.erb" do

  it "asks you to sign in if you are not signed in" do
    render
    rendered.should have_content('Please sign in.')
  end

end

它添加了调用后产生错误user_signed_in? 是:

  1) home/index.html.erb asks you to sign in if you are not signed in
     Failure/Error: render
     ActionView::Template::Error:
       undefined method `authenticate' for nil:NilClass
     # ./app/views/home/index.html.erb:1:in `_app_views_home_index_html_erb__1932916999377371771_70268384974540'
     # ./spec/views/home/index.html.erb_spec.rb:6:in `block (2 levels) in <top (required)>'

有很多在网络上此错误引用,但我还没有找到足够的描述,我可以得到我的测试再次通过一个答案。 我相信这个问题有事情做与视图(其正从任何型号/控制器隔离测试)没有提供的一些关键设计的基础设施。 您的建议表示赞赏。

此外,一旦测试通过,我将如何测试其他路径(用户已登录)? 我相信这将是非常相似的。 谢谢。

Answer 1:

您收到的错误是因为你需要包括色器件测试助手

一般来说,你将添加这个(你可能已经有了)符合规格/支持/ devise.rb

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end

但既然你要创建一个视图规范,你会想是这样的:

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
  config.include Devise::TestHelpers, :type => :view
end


Answer 2:

看看Rails的作曲家 ,这将引导您完成一个新的Rails项目创建与像测试,UI等选项..

创建一个示例项目,最酷的是它会创造一切为您,包括考虑到与色器件测试的考验。 然后,你可以从这些测试规范的想法。

工作对我来说:d

HTH



文章来源: Testing Views that use Devise with RSpec