|
||||||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||||||
| コントローラのテスト | ||||||||||||||||
|
続いてコントローラのテストを行いましょう。 |
||||||||||||||||
| コントローラの雛形ファイルを作成 | ||||||||||||||||
|
モデルの場合と同様に、scaffoldした時点ですでに「RAILS_ROOT/test/functional」配下にcontacts_controller_test.rbが生成されています。 |
||||||||||||||||
| コントローラのテストを作成 | ||||||||||||||||
|
contacts_controller_test.rbを開きます。自動的に生成されているテストコードに続いて下記のコードを記述します。
2行目のpostはWebブラウザからのPOSTリクエストをエミュレートするメソッドで、updateアクションへ指定したパラメータでアクセスした場合と同様の処理が行われます。 3、4行目ではモデルのテストと同様のassert_equalを用いた検証のほかに、assert_redirected_toを用いてリダイレクト先のパスの検証も行っています。Railsでは他にも表3に示すような便利な検証メソッドが揃えられており、必要に応じて利用することができます。
表3:Railsで提供される検証メソッド(一部) また検証メソッドはRailsのAPI Documentationで確認することができます。
Module: Test::Unit::Assertions(英語)
http://api.rubyonrails.com/classes/Test/Unit/Assertions.html |
||||||||||||||||
| コントローラのテストを実行 | ||||||||||||||||
|
コントローラのテストの実行は、モデルのテストと同様です。「モデルのテストを実行」を参考に行ってください。 |
||||||||||||||||
| コントローラをまたがるテスト | ||||||||||||||||
|
Rails 1.1から、コントローラをまたがるテストを実行する機能も付属しています。テストの作成、実施の方法は基本的にこれまで述べたモデルやコントローラのテストと同様です。詳細は下記のURLを参照してください。
Integration Testの説明(英語)
http://api.rubyonrails.com/classes/ActionController/IntegrationTest.html |
||||||||||||||||
| Rakeを用いたテスト実行 | ||||||||||||||||
|
本連載ではRadRailsを用いて視覚的にテストを実行してきましたが、RailsではRAILS_ROOTフォルダでrakeコマンドを実行することで、テストの実行を行うことができます。先ほども述べましたが、コマンドベースのrakeにはcronやatなどで定期的に起動できるという利点があります。またrakeを使った場合スキーマ情報のインポートもセットで行われます。
表4:rakeを用いたテスト実行 |
||||||||||||||||
| デバッガ | ||||||||||||||||
|
RadRailsにはデバッガが付属しており、アプリケーションの変数を確認しながらステップ実行することができます。Railsにも元々breakpointというコマンドベースのデバッガスクリプトが付属していますが、ユーザビリティという意味ではIDEのRadRailsに軍配が上がります。 しかしデバッガはRadRails 0.6.3で正式リリースされた機能ではないため、動作が不安定な面もあります。0.7での正式リリース(予定)が待たれます。 |
||||||||||||||||
| 終わりに | ||||||||||||||||
|
今回はRailsによるテストの概観をご紹介してきました。スクリプト言語はコンパイル時の文法・型チェックがありませんが、Railsではテストを繰り返し行うことで品質と生産性を確保することができます。 さて次回はRails上でAjaxを作ってみましょう。 |
||||||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||||||
|
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||
|
|
||||||||||||||||
|
||||||||||||||||

