Pinto公開に向けて #21 ― HTTPレイヤのテストを共通化するテスト
あらすじ
Pintoというソーシャルブックマークサービス、およびPintoBeansというWebアプリケーションフレームワークをRubyで開発中です。その際に気づいたことや工夫した点などを、備忘録を兼ねて書いています。その21回目です。
HTTPレイヤのテストを書くのは大変
先日よりHTTPレイヤのテストをちまちまと書いています。感想は「こんなもの二度と書きたくない」。テスト項目多すぎ。URLを追加するたびにこんなテストを書くのは嫌すぎる。
だから共通化した
とはいえ、うまく共通化すれば、同じテストを何度も書く必要はないでしょう。というわけで、こんな風にしてみました。
$spec = {} $spec[:allowed_methods] = 'GET, HEAD, OPTIONS' $spec[:host] = 'pinto.jp' $spec[:path] = '/' $spec[:multiple_choices] = true $spec[:content_type] = 'XHTML' $spec[:expires] = 60 * 60 * 6 $LOAD_PATH << '../' require 'pinto_beans/spec/restful'refactored specs · iwamot/pinto@3af521f · GitHub
これはトップページのテスト。別ページのテストが必要になったら、$specをちょっと編集する感じです。本当はグローバル変数($spec)を使いたくないのですが、これ以外の方法が浮かびませんでした。
RESTfulなふるまいとして共通化できる部分は:
(フレームワーク側)に押しつけています。
私はどこに向かっているのか
普通はこんなことしませんよね。友人に「ソーシャルブックマークサービスを開発したい」と相談されたら「Rails使ってさっさとリリースしたら」と答えると思います。
ただ、私のゴールはソーシャルブックマークサービスの開発でも公開でもなく、自分でもよくわからない、どこか遠いところにあります。Railsでサクっと作ったアプリケーションを公開しても、私のプログラマ心は満たされない。そういう病気なんです。