2012年5月13日日曜日

sinatra (3) - テスト -

(2)の続き。
テスト環境を整備します。
.
├── config
├── config.ru
├── Gemfile
├── Gemfile.lock
├── Guardfile  # 追加
├── lib
│     └── app.rb
├── public
├── spec
│     ├── app_spec.rb  # 追加
│     └── spec_helper.rb  # 追加
└── views

Gemfile

source :rubygems

gem 'sinatra', require: 'sinatra/base'

group :development do
  gem 'sinatra-reloader', require: 'sinatra/reloader'
end

group :test do
  gem 'rspec'
  gem 'rack-test', require: 'rack/test'
  gem 'guard-rspec'
end

spec/spec_helper.rb

require 'bundler/setup'
Bundler.require :default, :test

require 'app'

RSpec.configure do |config|
  config.include Rack::Test::Methods
end

spec/app_spec.rb

require 'spec_helper'

describe MyApp do

  def app
    @app ||= MyApp
  end

  context "when get '/'" do
    before do
      get '/'
    end
    subject { last_response }
    its(:status) { should == 200 }
    its(:body) { should include("Hello World!") }
  end
end
$ bundle install
$ bundle exec rspec
これで2つのテストが通ると思います。
加えて、テストもオートロードされるようGuardを使用します。

Guardfile

guard 'rspec', :version => 2, :cli => "-c -fs" do
  watch(%r{^spec/.+_spec\.rb$})
  watch(%r{^lib/(.+)\.rb$})     { |m| "spec/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb')  { "spec" }
  watch(%r{^views/(.+)\.(slim|scss)$})
end
$ bundle exec guard
Xubuntu 12.04になってnotificationもまともに動くようになっているようです。 (11.10まで私の環境では不安定でした)

0 件のコメント:

コメントを投稿