SlideShare a Scribd company logo
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__
●
    ご清聴ありがとうございました

More Related Content

Testing in Sinatra

  • 1. Sinatra とか Padrino とかで テストをどうしているか? - Padrino 黒ミサ in 神泉 - 2011/10/29 @ 神泉 Uchio Kondo (@udzura)
  • 2. 近藤うちお(@udzura) ● Rubyist(2年半ほど) ● Groovyに挫折 ● 現在Haskellを順調に挫折 柴犬のあくび ● 富士マガ所属(ご近所)、   雑誌を定期購読で買ってね! ● カルマ: Rack, Sinatra, Padrinoあたり Rails3, TDD, Linux, アジャイルとかも興味はあるんですよ……
  • 3. 近藤うちおさんの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
  • 4. 今日は ● Enterprise Sinatra の話です
  • 5. 今日は ● アプリケーションのテストの話です
  • 6. ところで、 ● 「単体テスト/結合テストなんて存在しない」 ● Toggeter ● http://togetter.com/li/206083
  • 7. 今日の内容 ● 今日する話 ● Sinatraでどういうテスト関連ライブラリを 使ってきたのか? ● 今日しない話 ● 単体テスト/結合テストって何? ● Sinatraに合ったテストプロセスとかって?
  • 8. キ~ワ~ド ● Rack::Test ● Padrino framework ● RSpec ● Mocha ● Machinist/Faker ● Capybara ● Sinatra::TestHelpers ● RSpec::Padrino
  • 9. Rack::Test ● Sinatra のテストの基本 ● コントローラ/ルーティング ● こういうテストができる
  • 10. 要するに ● get “/hogehoge” を叩く ● RackのENVのモックが、 app.call を起動 ● callで返ってきたRackレスポンスをオブジェク トに変換 ● #last_request, #last_response などで取得でき る ● あとは普通に値を検査する
  • 11. ところで ● Sinatra アップリケ~ションでテスト準備 ● test/ なり spec/ なりディレクトリを掘る ● spec_helper.rb なりを準備 ● RSpec.configure do |conf| ● Rakefile なりを準備 ● Gemfile なりを準備 ● モデルなどを追加する度にテストファイルも作る ● ………
  • 13. Padrinoのジェネレータを使う ● プロジェクトジェネレータの段階で テストライブラリ、モックライブラリを指定で きる ● コントローラ、モデルをジェネレートすれば 一緒にテストも作ってくれる ● padrino rake test/spec コマンドを用意してくれ る
  • 14. Sinatraでテスト ● Padrinoが便利、Padrinoに移行してみよう         ~完~
  • 15. とは言わず、 ● 具体的に何したか書きます
  • 16. Padrinoの対応状況(0.10.5) ● Testing libraries(-t) ● bacon, shoulda, cucumber, testspec, riot, rspec, minitest ● default: Test::Unit ● Mocking libraries(-m) ● rr, mocha
  • 17. @udzura さんの例 ● RSpec と Mocha です。 ● なので、以降の例はRSpecでの話です。
  • 18. Machinist/Faker ● In `spec/spec_helper.rb` ● 頭の方に ● RSpec.configureの直後に
  • 19. blueprints.rb ● spec_helper.rb と同じディレクトリ ● 詳細ググろう ● そして、 User.make とかそんな感じ
  • 21. Capyara ● In `spec/spec_helper.rb` ● 頭の方に ● 受け入れテスト_spec.rbに ● #visit, #current_path, #page など Capybara DSL
  • 23. Sinatra::TestHelpers ● sinatra-contrib gem に含まれる ● インクル~ドする ● 便利なショートカットヘルパー集です ● #session, #last_env など
  • 24. 具体的には #mock_app が便利 ● 動的アプリ定義、でも、 Padrino では使わないかなあ ● むしろ Sinatra で使うためのgemで使えそう
  • 25. RSpec::Padrino ● rspec-rails の大変便利なマッチャー/ヘルパーを Padrinoに合わせて移植しよう計画 ● 拙作 ● バージョン 0.0.1 ● というか、 route_to とか assigns ぐらいしか できていない
  • 27. 感想 ● rspec-rails って多機能で便利なんですね
  • 28. 頑張ります ● https://github.com/udzura/rspec-padrino
  • 29. まとめ ● Sinatra、便利アイテムが使えないかと思いきや Railsで使えるものが意外と使える ● Rails の肩に乗りまくる ● ないものはない ● ないものは、ない ● 作って「俺スゲー」するチャンス!!!1 ● 正直 Padrino 便利、テストが必要になってきた ら導入をご一考ください
  • 31. 最新Padrino情報 ● スタートPadrinoの資料が見られます ● http://www.slideshare.net/udzura/startpadrino ● Sinatra、そしてPadrinoのイマが分かる!
  • 32. Padrino重要情報 ● Padrino 黒ミサ in 京都 ● 2011/12/10 http://atnd.org/events/21442
  • 33. 東京、そして京都で連続イベント ● Padrino 、流行ってますね! W A F
  • 34. Padrinoをよろしくね ● 若いソフトウェアなので、皆さんのフィード バックがまだまだ必要です! ● 二郎に飽きたあなたもぜひ! ● ハッカソンしたいですね(チラッ
  • 35. __END__ ● ご清聴ありがとうございました