WebPay::Mockを更新し、柔軟なエラーのテストが簡単になりました

WebPayのAPIレスポンスをテスト内で再現するためのRuby Gem、webpay-mockを更新しました。

今回の更新では、任意のWebMock形式のレスポンスを指定できるようになりました。 以前より提供していたダミーのエラーレスポンスを作成する機能と合わせることで、特定のエラーレスポンスを得た時の動作を簡単にテストできます。

使用例

RSpecを利用した記述例を示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
describe 'カードを指定して課金を作成すると有効期限切れエラーになる' do
  let(:params) { {
    amount: 1000,
    currency: 'jpy',
    description: 'test charge',
    card: {
      number: '4242-4242-4242-4242',
      exp_month: 10,
      exp_year: 2014,
      name: 'HANAKO YAMADA',
      cvc: '123'
  }}}
  before do
    webpay_stub(:charges, :create,
      params: params,
      response: card_error(
        message: "You must provide the card which is not expired",
        caused_by: "buyer",
        param: "exp_month",
        code: "invalid_expiry_month"
      ))
  end

  specify do
    expect { webpay.charge.create(params).id }.to raise_error { |e|
      expect(e.data.error.caused_by).to eq 'buyer'
      expect(e.data.error.code).to eq 'invalid_expiry_month'
    }
  end
end

自動的にincludeされているcard_error()メソッドに詳細なプロパティを指定することで、特定のエラーを再現できます。 エラーのプロパティについてはAPIエラードキュメントで解説しています。

他の例はwebpay-mockのテストケースでご覧になれます。

この改善はユーザの方からの指摘によって実現できました。 不足点をご報告いただきましたことにこの場を借りて御礼申し上げます。