Webmocks のスタブ化に問題があります。
これは、認証と承認に devise/cancan を使用する Rails 4 アプリケーションです。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 ステートメントより上のすべてが、lets または set in before ブロックを使用して設定されます。最小のオプションまで抽出しようとしましたが、テストはまだ失敗しています。
質問
私は期待していました
stub_request(:post, "#{ENV['API_PROXY']}/api/checks").
to_return(status: [500, "Internal Server Error"])
常に 500 のステータス レスポンスを返すようにしましたが、200 を返しています。
私の期待は正しかったですか?これは、webmocks を呼び出す方法ですか?