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の開発環境
-,

執筆者:

関連記事

RubyGemのことを調べる~RubyGems Guide for Japanese

    guides.rubygems.org/ すでに日本語化をはじめている人がいた. github.com/bisque33/RubyGems-Guides-for-Japan

Redmineプラグイン開発にCoffeeScriptとSASSを使う〜guard-sprockets&guard-sass

By: waferboard – CC BY 2.0 目次1 考え方2 guardの設定3 Guardfileをつくる4 できた、ただし 考え方 Redmineではsprocketを使って …

no image

Rubyでエクセル帳票印刷(.xls)~spreadsheet

  pdfとdocxとxlsが作成できれば帳票印刷で困ることはなさそう spreadsheetというgemを使ってみた 参考 dragonstar.asablo.jp/blog/2009/0 …

no image

Rails3.2でテーブルの並び替えをリファクタリング~ヘルパー

環境 Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現 テストができたのでHelper化 目次1 現状2 helper3 index.html.erb 現状 共通部分が …

SASS/SCSSでButtonをカスタマイズするならSassy Buttonsが簡単

By: Meike Schönhütte – CC BY 2.0[/caption]   jaredhardy.com/sassy-buttons/ 目次1 Railsでのインス …