【问题标题】:Devise spec - scoped views have no effect设计规范 - 范围视图无效
【发布时间】:2013-01-30 13:53:59
【问题描述】:

我正在使用Devise,我认为这是我的rails 3.2 应用程序的一个很好的身份验证工具。但是,使用 rspec 对其进行测试并不容易。

这是我的问题。我有不同的用户角色,一个是user,另一个是admin。我通过在我的设计初始化程序中执行 config.scoped_views = true 来打开范围视图,并通过运行 rails generate devise:views admins 生成视图。

以下是我失败的规范:

require "spec_helper"

describe "admins/sessions/new" do
  before do
    render
  end

  it "renders the form to log in" do
    rendered.should have_selector("form", action: admin_session_path, method: "post")
  end
end

它给了我

expected following output to contain a
<form action='/admins/sign_in' method='post'/>
tag

因为它实际上得到了

<form action="/users/sign_in" method="post">

它会呈现一个不同的表单,只有终端中的默认设计用户输入。

这表明它正在呈现默认的设计用户视图,而不是实际的管理视图。但是,管理视图确实存在,并且规范描述中的路径是正确的。如here 所示,我曾经遇到过与users 相同的问题 - 但由于初始化程序和路径设置正确,这些都可以正常工作。

我什至在我的测试环境中的浏览器中访问了有问题的页面,并查看了该页面的源代码,结果证明是正确的。所以我假设设计的范围视图在这个规范中没有任何影响?我需要告诉设计有多个用户范围吗?我必须在规范中做任何与平时不同的事情吗?

【问题讨论】:

    标签: ruby-on-rails rspec devise


    【解决方案1】:

    重新启动 rails 服务器并确保在 initializers/devise.rb 中有这个解决了问题:

    config.scoped_views = true
    

    【讨论】:

    • config.scoped_views = true 在 initializers/devise.rb 下
    • 你是对的!感谢您的关注。相应地更新了答案。
    【解决方案2】:

    您是否尝试将此行添加到 spec_helper?

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

    【讨论】:

      猜你喜欢
      • 2021-02-09
      • 1970-01-01
      • 2013-06-03
      • 1970-01-01
      • 2012-02-25
      • 2019-06-18
      • 2011-06-04
      • 2013-01-18
      • 1970-01-01
      相关资源
      最近更新 更多