Sinatra は手軽に Web アプリが書けるので、ペラサイト程度なら、テストを書かずにサクっと作り上げることが多いです。私の場合は。
だけど、認証が絡んで複雑になってきたら、テストが無いと不安になります。精神衛生的にテストは必要。テストが有るのと無いとじゃ、修正するときの安心感が違いますからね。
先日作った Sinatra + Warden のサンプルのテストを、Test::Unit で書いてみました。
# coding: utf-8 require "./app" # テスト対象のアプリを読み込む require "test/unit" require "rack/test" # ログインしているときのテスト class AppLoggedinTest < Test::Unit::TestCase include Rack::Test::Methods include Warden::Test::Helpers def app Sinatra::Application end def setup # ログインユーザーを用意 @user = { :name => "test", :password => "test" } login_as @user end def teardown logout end def test_index get "/" assert last_response.ok? assert last_response.body.include?("Hello Sinatra-Warden") end def test_logout get "/logout" assert last_response.redirect? assert last_request.env["warden"].user.nil? end end
Sinatra のテストでは、Rack::Test を使います。あと、Warden はテスト用のヘルパーを提供していて、ログインをエミューレートできます。