RSpec-2和Devise

gio*_*kti 4 rspec ruby-on-rails devise rspec2 ruby-on-rails-3

我创建了一个定制的设计注册控制器,我想用rspec测试它.

我试过一个非常简单的测试:

it "creates a new parent" do
  Parent.should receive(:new)
  post :create
end
Run Code Online (Sandbox Code Playgroud)

但我得到这个例外:

Failures:
  1) Parent::RegistrationsController POST create creates a new parent
     Failure/Error: post :create, { :commit => "Daftar",
     uncaught throw `warden'
     # /home/starqle/.rvm/gems/ree-1.8.7-2010.02/gems/devise-1.1.3/lib/devise/hooks/timeoutable.rb:16:in `throw'
     # /home/starqle/.rvm/gems/ree-1.8.7-2010.02/gems/devise-1.1.3/lib/devise/hooks/timeoutable.rb:16
Run Code Online (Sandbox Code Playgroud)

我已将此行放在我的测试中:

describe Parent::RegistrationsController do
  include Devise::TestHelpers
end
Run Code Online (Sandbox Code Playgroud)

我也已经把这一行:

request.env["devise_mapping"] = Devise.mappings[:parent]
Run Code Online (Sandbox Code Playgroud)

有人有想法解决这个问题吗?

Siw*_*申思维 5

我之前的回答有点令人困惑.抱歉.

更新的答案:根本原因是用户未在"登录"之前"确认".

@user.confirm! 
sign_in @user
Run Code Online (Sandbox Code Playgroud)

一切都很好.

  • 我似乎找到了根本原因:首先应在sign_in之前确认@user.@ user.confirm!sign_in(@user) (3认同)