はじめに
Web APIを使って様々なサービスと連携するというアーキテクチャはすっかり定着した感があります。みなさんも,
Web APIを使うアプリケーションの開発では,
筆者も,
ダミーWebサーバ作成ライブラリww(Double Web)
wwは,
- 軽量WebサービスフレームワークSinatra
(原悠さんによるRuby Freaks Loungeでの紹介記事) を使って簡単なWebサービスAPIを作成できる。 - 実際にWebサーバとして動作する。アプリケーション側でHTTPライブラリに細工する必要がない。
- 対象となる外部サービスとのやりとりを目視で確認できる。
- 事前に期待するリクエストを定義したり
(モック), 呼び出し後にリクエストを検証したり (スパイ) できる。
モック? スパイ? ダブル?
開発中やデバッグの際に,
この
- ダブル
(Double) - モックやスタブ,
ダミー, スパイなど, 実際の環境から切り離してテスト可能にするための手法の総称です。wwの名前も 「WebのDouble」 ということでここからとっています。 - スタブ
(Stub) - 自動化テストからの呼び出しを単純に置き換えるための手法です。実際に呼び出されたときに,
固定値など簡単な応答をします。呼ばれ方の検証などには関知しません。 - モック
(Mock) - 自動化テストとコンポーネント間で,
相互の呼び出しを検証するための手法です。呼ばれ方や, 呼ばれる順番などを検証します。また, モックを定義するということは 「そのテストで呼び出される」 はずであることを意味します。そのため, 一度も呼び出されていない場合にその旨を通知することもあります。 - スパイ
(Spy) - 自動化テストから呼び出されたことを事後に検証するための情報をとっておく手法です。簡単な応答をしたあとに,
実際の呼ばれ方も検証したい場合に使います。
より詳しい情報は,