ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

Sinatra×RSpecでテストの書き方

調べたけどやっぱりまだよくわからないのでアレですが。

とりあえずRSpecSinatraのテストを書いているコードを読んでみよう

ここSinatraHello 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インスタンスを作るためだと思いますが…