Rubyのテストは、自らAJAX呼び出しを行うブラウザを起動できます。Rubyのクライアントライブラリに接続されたHTTPレコーダーは、その別のブラウザプロセスが開く接続を自動的に観測するわけではありません。

ブラウザに向けた記録プロキシは、これらのリクエストが使う経路上に置かれます。

browser → recording forward proxy → external service
browser → recording forward proxy → recorded response

Puffing BillyはRubyのブラウザテスト向けにこの構成を提供します。選択したブラウザドライバー用の統合を使い、その後、シナリオが必要とするレスポンスまたは永続的な記録を定義します。

実際のリクエストに一致させます。メソッドと、プロキシが期待するURL表現を含めます。文書化されているHTTPSスタブ形式には、https://api.example:443/status のように明示的なポートが含まれます。

一致しないリクエストをどう扱うかを選びます。生きたサービスに到達させるなら一種のテストになり、記録がないときに拒否するならオフラインのシナリオに明確な境界が生まれます。記録は十分に具体的に保ち、送信内容が違うのに誤って同じ固定応答を受け取らないようにします。

リモートのブラウザでは、プロキシのリスナーがそのブラウザのマシンやコンテナから到達可能でなければなりません。テストランナーのプロセス内のLocalhostは、別のホストから見た同じリスナーを指しません。

関連記事