TOPシステム開発> モデルのテストを作成
Ruby on Rails入門
Ruby on Rails入門

第4回:Railsでテストをしてみよう
著者:アスタリクス  大西 正太   2006/6/14
前のページ  1  2  3   4  次のページ
モデルのテストを作成

   次にテスト本文を記述します。先ほどのcontact_test.rbを開き、下記のように編集します。
contact_test.rb
require File.dirname(__FILE__) + '/../test_helper'

class ContactTest < Test::Unit::TestCase
   fixtures :contacts

   def test_contact
      contact1 = Contact.find(1)
      assert_equal 'michael@example.com', contact1.email
      assert 8 > contact1.name.length
   end
end

   7行目ではContactインスタンスを取得し、8、9行目でその値の検証を行っています。

   8行目のassert_equalは第1引数と第2引数が等しい場合に検証結果が「OK」となります。今回の場合はContactインスタンスのemailが「michael@example.com」であるかを検証しています。

   9行目のassertでは第1引数が真の場合に検証結果が「OK」となります。つまり今回の場合はContactインスタンスのnameの文字列長が8文字より小さいかを検証しています。

   なおテストケースとなるメソッドは「test_*」という命名規則に従う必要があります。またfixturesの読み込みは4行目の「fixtures :contacts」で行われています。

   通常、モデルのテスト時にはRuby標準の「Test::Unit」のメソッドだけで十分テストを記述することが可能です。「Test::Unit」のメソッドは以下のURLから一覧を確認できます。

Rubyリファレンスマニュアル - Test::Unit
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Test%3A%3AUnit


モデルのテストを実行

   それではテストを実行してみましょう。


DBスキーマの読み込み

   コマンドプロンプトなどのコンソールを開き、RAILS_ROOTで下記コマンドを入力します。このことでdevelopmentモードのスキーマ情報をtestモードのDBへインポートします。

contact_test.rb
c:\AddressBook>rake clone_structure_to_test


実行

   RadRailsでデバッグパースペクティブへ移動し、テスト対象クラスを開いた状態でメニューの「Run → RunAs → Test::Unit Test」をクリックすると実行が開始されます。

   nameが8文字より多いためにプログレスバーが赤くなり、エラーメッセージが表示されます。contacts.csvを編集してnameを8文字より少なくして、もう一度テストを実行してみてください。今度はすべてのテストに成功します。

モデルのテストの実行
図3:モデルのテストの実行
(画像をクリックすると別ウィンドウに拡大図を表示します)

   図3の画面はRadRails 0.6.3のものです。0.6.2以前ではテスト結果のプログレスバーが最後まで到達しない場合がありますので注意してください。

前のページ  1  2  3   4  次のページ


株式会社アスタリクス  大西 正太氏
著者プロフィール
株式会社アスタリクス  大西 正太
JavaEEフレームワークの設計構築や開発プロセス策定などの業務を経て、現在は新規ビジネス創生に携わる。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第4回:Railsでテストをしてみよう
  テストの自動化
  サンプルにテストを適用する
モデルのテストを作成
  コントローラのテスト