【发布时间】: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