1

我正在使用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">

它仅使用终端中的默认设计用户输入呈现不同的表单。

这表明它正在呈现默认的设计用户视图,而不是实际的管理视图。但是,管理视图确实存在,并且规范描述中的路径是正确的。就像这里显示的那样,我曾经遇到过同样的问题users- 但由于初始化程序和路径设置正确,这些都运行良好。

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

4

2 回答 2

2

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

config.scoped_views = true
于 2013-03-30T12:51:16.967 回答
0

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

RSpec.configure do |config|
  config.include Devise::TestHelpers, :type => :controller
end
于 2013-01-30T14:27:46.347 回答