【问题标题】:testing a redirect in rspec and devise在 rspec 中测试重定向并设计
【发布时间】:2014-07-16 10:00:33
【问题描述】:

我想编写一个控制器测试来检查在成功登录时,用户是否被重定向到某个页面。我目前进行的当前测试返回 200。

require 'rails_helper'
RSpec.describe Admin::EntriesController, :type => :controller do

setup_factories
    describe "after login" do 
        it "should redirect to pending after logged in" do
            sign_in admin
        expect(response).to redirect_to('admin/entries/pending') 
        end
    end

end

返回

   Failure/Error: expect(response).to redirect_to('admin/entries/pending')
       Expected response to be a <redirect>, but was <200>

相关控制者

class AdminController < Devise::RegistrationsController

  before_filter :authenticate_admin!

  protected 

  def after_sign_in_path_for(admin)
    pending_admin_entries_path
  end

end

我尝试这样做是否正确,我哪里错了?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby rspec devise


    【解决方案1】:

    RSpec 中的sign_in 用户不发出请求,因此您无法测试重定向。

    对于after_sign_in_path,可以这样测试:

    it 'redirects user to pending admin entries path' do    
      expect(controller.after_sign_in_path(user)).to eq pending_admin_entries_path
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多