Rspec 2 + Devise + Cancan - Factorygirl =控制器测试无法正常工作

时间:2011-06-15 16:11:49

标签: ruby-on-rails-3 testing rspec devise cancan

我正在尝试转向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。所有示例修复此处和谷歌似乎。我不明白为什么我所做的不起作用。错误在调试中没用。

我知道这个问题已经被要求死亡。我已经阅读了我能找到的每个博客和论坛。我走到了尽头。

3 个答案:

答案 0 :(得分:1)

可能是重定向。对于任何非2xx状态代码(如302),be_success返回false。尝试检查response.status的值 - 如果它正在重定向,则可能意味着您的身份验证或授权方案产生了意外结果。

答案 1 :(得分:0)

尝试在断言之前添加puts response.body,并查看您要求的页面。如果您无法从那里弄明白,可能会编辑您的问题以包含输出?

答案 2 :(得分:0)

如果您使用设计的“可确认”模块,该模块会让用户点击电子邮件中的链接以确认其地址,那么当您在测试中使用“sign_in”时,您还必须伪造电子邮件确认。它看起来像这样:

sign_in @user
@user.confim!