capybara はデフォルトの rack_test だとRackアプリとしてテストを実行するんだけど、tDiary は Rack と CGI のハイブリッドなので Capybara では CGI 経由で呼び出された部分のテストができなくてだいぶ困る。というかこれでバグが出たりしている。
そこで capybara-mechanize ですよ。
使い方はだいたいいつものGemfileに追加してから default_driver を変えるだけなんだけど、mechanize (もしくはselenium)で外部にあるサイトをテストするには
Capybara.app_host = 'http://www.google.com'
のように指定する必要がある。
とりあえずこの方法を使って tDiary では Webrick で立ち上げたローカルの CGI に対して Capybara でテストできるようにしてみた。これで大半の tDiary の動作環境である CGI で動作する状態のテストができるようになったので全く表示されないような自体は防げるかなあ。ひとまずもう少しテストを埋めてから次の一手に進みたい。
難易度9に行くためのクエストで足踏み中。しょうがないので難易度7と8のクエ埋めをしたり。