Sinatra×RSpecでテストの書き方
調べたけどやっぱりまだよくわからないのでアレですが。
とりあえずRSpecでSinatraのテストを書いているコードを読んでみよう
ここにSinatraでHello Worldしたものをテストしているリポジトリがあったので読んでみました。とりあえずこういう構造で書いて行けばよさそうですね。
↓テストするアプリケーションのコード
require 'sinatra' get '/' do 'Hello' end
↓テストコード
require File.dirname(__FILE__) + '/spec_helper' describe "App" do include Rack::Test::Methods def app @app ||= Sinatra::Application end describe "レスポンスの精査" do describe "/へのGETアクセス" do before { get '/' } #post '/'とするとPOSTリクエストを/に投げる subject { last_response } #最後のリクエストに対するレスポンス it { should be_ok }#OKが返ることを期待 its(:body) { should eq "Hello" } #レスポンスの本文が「Hello」であることを期待 end end end
アプリのコードはそのままコピペしてきましたがテストコードは書き換えました。冒頭2行目から4行が「おまじない」のようです。「include Rack::Test::Methods」はgetやlast_responseを使うため、def appはSinatraのインスタンスを作るためだと思いますが…