我正在使用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
- 但由于初始化程序和路径设置正确,这些都运行良好。
我什至在我的测试环境中的浏览器中访问了有问题的页面,并查看了页面的源代码,结果证明是正确的。所以我假设设计的范围视图在这个规范中没有任何影响?我需要告诉设计有多个用户范围吗?我必须在规范中做任何与平时不同的事情吗?