存根 500 错误
Stubbing a 500 error
我遇到了 webmocks 存根问题。
这是一个 Rails 4 应用程序,使用 devise/cancan 进行身份验证和授权。我正在使用 RSpec 来编写我的测试。
我有一个(由于这个 post 的原因而简化了!)我想要 运行 的测试。
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"])
始终 return 500 状态响应,但它是 returning 200。
我的期望是否正确? webmocks 应该这样称呼吗?
你需要在stub_request
方法中添加查询参数,你可以改成这样
stub_request(:post, "#{ENV['API_PROXY']}/api/checks")
.with(query: {api_check: api_params})
.to_return(status: [500, "Internal Server Error"])
我遇到了 webmocks 存根问题。
这是一个 Rails 4 应用程序,使用 devise/cancan 进行身份验证和授权。我正在使用 RSpec 来编写我的测试。
我有一个(由于这个 post 的原因而简化了!)我想要 运行 的测试。
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"])
始终 return 500 状态响应,但它是 returning 200。
我的期望是否正确? webmocks 应该这样称呼吗?
你需要在stub_request
方法中添加查询参数,你可以改成这样
stub_request(:post, "#{ENV['API_PROXY']}/api/checks")
.with(query: {api_check: api_params})
.to_return(status: [500, "Internal Server Error"])