Webpay::Mockで決済周りのテストを書く

この記事

qiita.com

とかを参考にしながらWebpayでの決済機能は実現できたものの、テスト書くのどうしよ。。

と悩んでいたところでWebpay::Mockというものを用意してくださってくれていることに気付く。

決済周りの処理のテストを書く方法をメモしておきます。

gemのREADMEと一緒に、以下の記事も参考にさせていただきました。

engineering.webpay.co.jp

WebPayテスト環境のオブジェクトを削除するRakeタスク | EasyRamble

今回実装した環境は以下です。

$ bundle exec rails -v
4.2.6
$ cat .ruby-version
2.3.0

準備

まずはgemを追加してインストール。

# Gemfile
gem "webpay-mock"
$ bundle

そしたら、rails_helper.rbでrequireしてconfigも設定します。

# spec/rails_helper.rb
# ...
require "webpay/mock"
# ...
RSpec.configure do |config|
  # ...
  config.include WebPay::Mock::WebMockWrapper
end

テスト実装

ここまでくれば、specファイルで例えば以下のように使用することができます。

let(:params) { { amount: 1000, currency: 'jpy', card: 'tok_xxxxxxxxx', description: 'test charge' } }
let!(:response) { webpay_stub(:charges, :create, params: params) }

specify { expect(webpay.charge.create(params).id).to eq response['id'] }

他のtest casesはコチラに。

github.com