Sinatra とか Padrino とかで

テストをどうしているか?
- Padrino 黒ミサ in 神泉 -

2011/10/29 @ 神泉
Uchio Kondo (@udzura)

近藤うちお(@udzura)

Rubyist(2年半ほど)

Groovyに挫折

現在Haskellを順調に挫折

柴犬のあくび

富士マガ所属(ご近所)、
  雑誌を定期購読で買ってね!
カルマ: Rack, Sinatra, Padrinoあたり
Rails3, TDD, Linux, アジャイルとかも興味はあるんですよ……

近藤うちおさんのworks

ブロッグ http://blog.udzura.jp/

Padrino 日本語サイト翻訳リーダー

Padrino framework contributor

自称、 Padrino framework エバンジェリストJPです

RubyGems: rack-session-dbm

RubyGems: rspec-padrino

若干のふざけたウェッブサービス

WP on passenger、RSpec on PHPの記事書いた人

その他、 http://udzura.jp

今日は

Enterprise Sinatra の話です

今日は

アプリケーションのテストの話です

ところで、

「単体テスト/結合テストなんて存在しない」

Toggeter

http://togetter.com/li/206083

今日の内容

今日する話

Sinatraでどういうテスト関連ライブラリを
使ってきたのか?

今日しない話

単体テスト/結合テストって何?

Sinatraに合ったテストプロセスとかって?

キ~ワ~ド

Rack::Test

Padrino framework

RSpec

Mocha

Machinist/Faker

Capybara

Sinatra::TestHelpers

RSpec::Padrino

Rack::Test

Sinatra のテストの基本

コントローラ/ルーティング

こういうテストができる

要するに

get “/hogehoge” を叩く

RackのENVのモックが、 app.call を起動

callで返ってきたRackレスポンスをオブジェク
トに変換
#last_request, #last_response などで取得でき

あとは普通に値を検査する

ところで

Sinatra アップリケ~ションでテスト準備

test/ なり spec/ なりディレクトリを掘る

spec_helper.rb なりを準備

RSpec.configure do |conf|

Rakefile なりを準備

Gemfile なりを準備

モデルなどを追加する度にテストファイルも作る

………

あなたと、

Padrinoのジェネレータを使う

プロジェクトジェネレータの段階で
テストライブラリ、モックライブラリを指定で
きる
コントローラ、モデルをジェネレートすれば
一緒にテストも作ってくれる
padrino rake test/spec コマンドを用意してくれ

Sinatraでテスト

Padrinoが便利、Padrinoに移行してみよう
        ~完~

とは言わず、

具体的に何したか書きます

Padrinoの対応状況(0.10.5)

Testing libraries(-t)

bacon, shoulda, cucumber, testspec, riot, rspec,
minitest
default: Test::Unit

Mocking libraries(-m)

rr, mocha

@udzura さんの例

RSpec と Mocha です。

なので、以降の例はRSpecでの話です。

Machinist/Faker

In `spec/spec_helper.rb`

頭の方に

RSpec.configureの直後に

blueprints.rb

spec_helper.rb と同じディレクトリ

詳細ググろう

そして、 User.make とかそんな感じ

普通に使えました

Capyara

In `spec/spec_helper.rb`

頭の方に

受け入れテスト_spec.rbに

#visit, #current_path, #page など Capybara DSL

普通に使えました(2)

Sinatra::TestHelpers

sinatra-contrib gem に含まれる

インクル~ドする

便利なショートカットヘルパー集です

#session, #last_env など

具体的には #mock_app が便利

動的アプリ定義、でも、 Padrino では使わないかなあ

むしろ Sinatra で使うためのgemで使えそう

RSpec::Padrino

rspec-rails の大変便利なマッチャー/ヘルパーを
Padrinoに合わせて移植しよう計画

拙作

バージョン 0.0.1

というか、 route_to とか assigns ぐらいしか
できていない

こんなん

感想

rspec-rails って多機能で便利なんですね

頑張ります

https://github.com/udzura/rspec-padrino

まとめ

Sinatra、便利アイテムが使えないかと思いきや
Railsで使えるものが意外と使える

Rails の肩に乗りまくる

ないものはない

ないものは、ない

作って「俺スゲー」するチャンス!!!1

正直 Padrino 便利、テストが必要になってきた
ら導入をご一考ください

おまけ

最新Padrino情報

スタートPadrinoの資料が見られます

http://www.slideshare.net/udzura/startpadrino

Sinatra、そしてPadrinoのイマが分かる!

Padrino重要情報

Padrino 黒ミサ in 京都

2011/12/10

http://atnd.org/events/21442

東京、そして京都で連続イベント

Padrino 、流行ってますね!

W
A
F

Padrinoをよろしくね

若いソフトウェアなので、皆さんのフィード
バックがまだまだ必要です!

二郎に飽きたあなたもぜひ!

ハッカソンしたいですね(チラッ

__END__

ご清聴ありがとうございました