如何对护栏规范进行存根并返回401

问题描述 投票:0回答:1

调用设计会话控制器创建方法

allow(request.env ['warden'])。to receive(:authenticate!)。and_throw(:warden)帖子:创建,参数:{用户:{电子邮件:'[email protected]',密码:'错误'}}

ruby-on-rails rspec
1个回答
0
投票

您应该像这样更改代码

  allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})

然后您需要在这样的测试规范中发送您的创建请求,才能正常工作。

  it "gets unauthorized error" do
    allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden, {:scope => :user})

    post :create, params: { user: {email: '[email protected]', password: 'error'} }

    expect(response).to have_http_status(401)
  end

确保您的spec_helper.rb具有:

  require 'rails_helper'
  require 'support/controller_helpers'
  require 'devise'
  ...
  RSpec.configure do |config|
    ...
    config.include Devise::Test::ControllerHelpers, :type => :controller
    config.include ControllerHelpers, :type => :controller
    ...
  end
© www.soinside.com 2019 - 2024. All rights reserved.