Railsで使えるGem RubyOnRailsの開発環境

Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard

投稿日:

環境 ruby 1.9.3 & rails 3.2.8

参考 cucumber + spork + guard + factory_girl

あってもよいが rails new rails_app -Tなど、-Tオプションをつけてtestunitは除外しておくほうがなにかと都合がいい

Gemfile & bundle

*capybaraはhas_content?で正規表現をつかうため最新の2.0.0ベータをダウンロードする

インストール

rspecのインストール

エラーが出ないか確認

 cucumberのインストール

エラーが出ないか確認

sporkの初期設定

sporkはrailsなどを事前に読み込んでおいてテストをスピードアップする仕組みらしい

cucumberのspork設定にFactoryGirlの設定をしておく(cucumber/railsのうしろくらいに require 'factory_girl_rails' を追加)

guardの初期設定

Guardfile のspork設定の:test_unitを除外しておく

明示的にsporkの使用を指定する必要がある

*このままだと標準formatのprettyで出力されてしまうので、簡略化したprogressで出力したい場合は

config/cucumber.ymlにguardという名前のprofileを作成してGuardfileにはそのprofileを指定するのがいいようだ

その場合のGuardfileの記載

 

Guardの実行

別ターミナルで

止めるときはctrl + cで

動作確認

環境の例

以下は次の環境での例

fieature/post.featureファイルを用意

FactoryGirlのモデルを準備

*一応stringと書いたほうがいいみたい

feature/step_difinitions/post_steps.rbを用意

*has_content?がなぜか常にtrueになるので、should have_contentに変えた

動作確認

Guardを実行したターミナルに次のような表示が出ていれば成功

以後、緑の字をみると心が安定するようになる

rspec:scaffold

ちなみにrspecの場合は

などでひと通りのファイルを生成できる

まとめ

オブジェクト指向でクラスとメソッドの責任分担をしっかりするような場合はrspec、複雑なviewやcontrollerの場合はcucumberがそれぞれ向いているような印象

もちろん併用してもOK

 

テストファーストって言葉をはじめて知ったのは「Head First Java」という本

その本では、書くコードは3種類ある。人間の読むコード、テストコード、本番のコードって書いてたけど、cucumberはこれに近い気がする

 

 

下の本はちょっと古いかも

-Railsで使えるGem, RubyOnRailsの開発環境
-,

執筆者:

関連記事

RSpecとCapybaraのテストの例

環境 KEN_ALL.CSVを使ってRailsで郵便番号を検索するサイトを作る1 KEN_ALL.CSVを使ってRailsで郵便番号を検索するサイトを作る2 Rails3.2.8とRSpecとCapy …

RailsでECサイト構築2 注文してみる~spree

  前提 RailsでECサイト構築~spree さっきは日本に発送できなかったので、最小限の設定をして注文から入金・発送までの一連の流れをみてみる 目次1 設定2 注文してみる3 入金・発 …

no image

Rubyからdocxを生成する

    前提 Rubyでdocxをいろいろ分析してみた 変数の仕様~正規表現 いろいろなパターンで試してみた 例えば、こんな文 [crayon-58fc97bc604f594195 …

Rubyでデータクリーニング~mechanize & active_support

  オライリー・ジャパンから「d3をはじめよう」という本が発売されたので読んだ 棒グラフ、折れ線グラフ、インタラクション(マウスオーバーで丸が大きくなるとかラベル表示とか、横のリストからグラ …

no image

Rails3.2でajaxなフォルダツリーを導入する3~dynatree-rails & jQuery UI dialog

  前回 Rails3.2でajaxなフォルダツリーを導入する~dynatree-rails Rails3.2でajaxなフォルダツリーを導入する2~dynatree-rails &nbsp …