Upload
uchio-kondo
View
377
Download
0
Embed Size (px)
DESCRIPTION
this is a slide presented on TokyuRubyKaigi04
Citation preview
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 って多機能で便利なんですね
まとめ
● 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 、流行ってますね!
WAF
Padrinoをよろしくね
● 若いソフトウェアなので、皆さんのフィードバックがまだまだ必要です!
● 二郎に飽きたあなたもぜひ!● ハッカソンしたいですね(チラッ
__END__
● ご清聴ありがとうございました