Ruby Freaks Lounge

第35回 実用的なダミーサーバ ww(double-web)(1)

この記事を読むのに必要な時間:およそ 3.5 分

リクエストをスパイする

エントリの取得はうまく実装できていそうですが,サーバ側から見ても本当に正しく動いているでしょうか。wwはサーバ側で受け付けたリクエストの内容をクライアント側で確認する「スパイ」機能と それを目視で確認するためのインターフェースを備えています。

スパイ機能を有効にするには,アクションを定義するget()メソッドの前で,spy()メソッドを呼び出します。

diff --git a/miniblog.ru b/miniblog.ru
index a88d294..24940cf 100644
--- a/miniblog.ru
+++ b/miniblog.ru
@@ -7,7 +7,7 @@ require 'ww/spy_eye'
app = Ww::SpyEye.to_app do
m_offset = 0

- get("/messages/:user.json") do |user|
+ spy.get("/messages/:user.json") do |user|
content_type "application/json"
t = Time.local(2010, 3, 13, 12, 34 + (m_offset += 1), 56)
body = [ 

サーバを^Cで停止させたうえで修正し,再度起動します。 その後,http://localhost:3080/spyにアクセスすると,リクエスト確認用のインターフェースを表示できます。

再起動したばかりなので,この時点では何も表示されていませんね図2⁠。

図2 サーバ再起動後に,http://localhost:3080/spyにアクセスした時の画面

図2 サーバ再起動後に,http://localhost:3080/spyにアクセスした時の画面

先ほどのクライアントを走らせたあとで確認すると,6リクエスト(3ユーザx2回)の リクエストが来ていることがわかります図3⁠。

図3 クライアントを走らせた後にhttp://localhost:3080/spyにアクセスした時の画面

図3 クライアントを走らせた後にhttp://localhost:3080/spyにアクセスした時の画面

さらに,⁠Headers」をクリックすると,リクエストヘッダも確認できます。

図4 リクエストヘッダも確認できる

図4 リクエストヘッダも確認できる

このように,実際にサーバに届いたリクエストがどのようなものだったか簡単に目視できます。また,POSTリクエストを受け取った場合には,リクエストボディも確認できます。

まとめ

今回は,外部サーバとのやりとりで必要になる偽物の呼び方と役割を説明し,Webサーバのダブルとなるwwを紹介しました。さらに,wwを使ってWebリクエストをスパイする方法も説明しました。次回は,エントリの投稿機能の実装を通じて,wwの自動化テストへの適用方法を説明します。

著者プロフィール

諸橋恭介(もろはしきょうすけ)

(株)永和システムマネジメントサービスプロバイディング事業部所属,Rails勉強会@東京を主催。RubyやRailsを使った受託開発に従事。CucumberやRSpecを使って,楽しくテスト駆動開発を行いたいと思っている。
著書に「Railsレシピブック 183の技」(共著・ソフトバンククリエイティブ)がある。

ブログ:http://d.hatena.ne.jp/moro/
Twitter:http://twitter.com/moro/