Ruby on rails 4 留下500个错误

Ruby on rails 4 留下500个错误,ruby-on-rails-4,webmock,Ruby On Rails 4,Webmock,我对WebMock存根有问题 这是一个Rails 4应用程序,使用Desive/cancan进行身份验证和授权。我正在使用RSpec编写测试 我有一个(为了这篇文章的缘故而简化了)测试,我想运行它 require 'rails_helper' RSpec.describe ApiChecksController, type: :controller do include Devise::TestHelpers let(:user) { FactoryGirl.cr

我对WebMock存根有问题

这是一个Rails 4应用程序,使用Desive/cancan进行身份验证和授权。我正在使用RSpec编写测试

我有一个(为了这篇文章的缘故而简化了)测试,我想运行它

require 'rails_helper'

RSpec.describe ApiChecksController, type: :controller do

  include Devise::TestHelpers

  let(:user)          { FactoryGirl.create :user }
  let(:api_params) do
    {
      param_1: 'VALUE',
      param_2: '1980-01-01',
      param_3: 'AA123',
      param_4: "#{Date.today}"
    }
  end

  context 'logged in as standard user' do
  describe 'POST #lookup' do
      context 'displays error' do
        it 'when 500 returned' do
          WebMock.disable_net_connect!(allow: 'codeclimate.com')
          sign_in user
          stub_request(:post, "#{ENV['API_PROXY']}/api/checks").
            to_return(status: [500, "Internal Server Error"])
          post(:lookup, api_check: api_params)
          expect(response.status).to eq(500)
        end
      end
    end
  end
end
在完整测试套件中,expect语句上方的所有内容都是使用let或set-In-before块设置的。我试图把它细化到最小的选项,但测试仍然失败

问题

我期待着

stub_request(:post, "#{ENV['API_PROXY']}/api/checks").
  to_return(status: [500, "Internal Server Error"])
始终返回500状态响应,但返回200


我的期望正确吗?这就是WebMock的调用方式吗?

您需要将查询参数添加到
存根请求
方法中,您可以将其更改为如下所示

stub_request(:post, "#{ENV['API_PROXY']}/api/checks")
  .with(query: {api_check: api_params})
  .to_return(status: [500, "Internal Server Error"])