今回のプロジェクトではRspecでテストコードを書こうと思って調べてみました。
環境はruby-1.9.3-p0, rails3.2.2, postgresです。
難易度★★☆☆☆
ここでは、railsのプロジェクトを作成する時に、rspecを利用することを前提にプロジェクトの作成をしていることを想定しています。
それ以外の場合は、デフォルトで用意されるUnit::Test周りでエラーが発生するみたいなので、テスト周りの設定を変更してから次の作業を行ってください。
Gemfileに記述
まずGemfileを開きます。
vi Gemfile
ファイルに以下を記述します
group :test, :development do gem "rspec-rails", "~> 2.4" end
Gemfileを保存したらbundle installでgemを最新にします。
gemを最新にしたら以下のコマンドを入力します。
rails generate rspec:install
.rspec, spec_helper.rbが作成されます。
以上で準備完了です。
Modelのテストを記述
さて、ではModelのテストを記述しましょう。UserというModelがあるとします。
spec/models/user_spec.rbのファイルを作成します。内容は以下のように記述します。
# coding : utf-8 require 'spec_helper' # emailバリーデーションテスト describe User, "validate_email? methods" do it "should be validate_type VALIDATE_TYPE_SIGN_IN" do user = User.new user.validate_type = User::VALIDATE_TYPE_SIGN_IN user.validate_email?.should be_true end end
RSpecは「プログラムの振舞 (behaviour)」を記述するためのドメイン特化言語 (DomainSpecific Language:DSL) を提供するフレームワーク」です。
まったくさわったことのない人にはなんのことかさっぱりだと思います。そういう人はここを一読する必要があります。
内容を記述したら、テストを実行します。
rspec spec/models/user_spec.rb ↓ Finished in 0.27 seconds 1 examples, 0 failures
0 failuresなので成功です。失敗した場合は、エラー内容が詳細に表示されます。
あとはひたすらテストコードを記述していくだけです。他にもテストを便利にする色々なツールがあるようですが、とりあえずここまでです。
それにしても、最初はrailsの覚えることの多さを批判していましたが、結局は色々なツールを併用するようになってしまいました。
もう少し学習コストが低くなってほしいものですね。
0 件のコメント:
コメントを投稿