Как заглушить рельсы надзирателя spe c и вернуть 401 - PullRequest
0 голосов
/ 03 марта 2020

Вызов метода создания контроллера сеанса devise ...

allow(request.env['warden']).to receive(:authenticate!).and_throw(:warden)
post :create, params: { user: {email: 'test@test.com', password: 'error'} }

1 Ответ

0 голосов
/ 03 марта 2020

Вы должны изменить свой код следующим образом

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

, а затем вам нужно отправить запрос на создание в тестовом наборе c, чтобы это работало.

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

    post :create, params: { user: {email: 'test@test.com', 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
...