我正在尝试转向rspec进行测试,但我无法通过用户身份验证进行控制器测试。测试不需要用户工作的路由。
require 'spec_helper'
describe UddsController do
include Devise::TestHelpers
render_views
before (:each) do
@user = User.new(:email => "test@user.com", :username => "test123")
@user.roles << Role.find_or_create_by_name("admin")
@user.save
sign_in @user
end
it "should get index" do
get :index
response.should be_success
end
我得到了
2) UddsController should get index
Failure/Error: response.should be_success
expected success? to return true, got false
# ./spec/controllers/udds_controller_spec.rb:21
我没有使用factory_girl。所有示例修复此处和谷歌似乎。我不明白为什么我所做的不起作用。错误在调试中没用。
我知道这个问题已经被要求死亡。我已经阅读了我能找到的每个博客和论坛。我走到了尽头。
答案 0 :(得分:1)
可能是重定向。对于任何非2xx状态代码(如302),be_success
返回false。尝试检查response.status
的值 - 如果它正在重定向,则可能意味着您的身份验证或授权方案产生了意外结果。
答案 1 :(得分:0)
尝试在断言之前添加puts response.body
,并查看您要求的页面。如果您无法从那里弄明白,可能会编辑您的问题以包含输出?
答案 2 :(得分:0)
如果您使用设计的“可确认”模块,该模块会让用户点击电子邮件中的链接以确认其地址,那么当您在测试中使用“sign_in”时,您还必须伪造电子邮件确认。它看起来像这样:
sign_in @user
@user.confim!