Ruby on Rails 3 アプリケーションプログラミング(8/9)
テスト
rails が対応しているテスト
名称 | 概要 |
---|---|
Unitテスト | モデル単体の検索・更新・検証動作をチェック |
Functionalテスト | ステータスコードやテンプレート変数、ビューによる出力結果などコントローラ/テンプレートの呼び出しをチェック |
Integrationテスト | 複数コントローラに跨るユーザの実際の操作に沿った挙動のチェック |
Performanceテスト | アプリケーションの実行時間を計測 |
テストの準備
- テストデータベース構築
- rake db:migrate
- rake db:test:load
- rails dbconsole test
- .tables
- →テーブルがインポートされていることを確認
- rake db:test:purge (テストDBを破棄)
Unitテスト
- Unitテスト=単体テスト、モデルが正しく動作するかをチェックするテスト。
- テストファイル:test/unit/モデル名_test.rb
- Assertionメソッドをゴリゴリ書く。
- testメソッド
test "book validate" do book = Book.new({ :isbn => '978-4-7741-44', :title => 'JavaScript本格入門', :price => 3100, :publish => '技術評論社', :published => '2011-01-14', :cd => false }) assert !book.save, 'Failed to validate' assert_equal book.errors.size, 3, 'Failed to validate count' assert book.errors[:isbn].any?, 'Failed to isbn validate' end
- Assertionメソッド
- テストの実行
$ rake test:units TEST="test/unit/book_test.rb"
Functionalテスト
- Functionalテスト=機能テスト、コントローラ(アクション)に対する検証。
- テストファイル:test/functional/コントローラ名_controller_test.rb
- Assertionをゴリゴリ書くけどUnitテストと違いコントローラ起動のため get: やら post: やらをコールする。
- テストの実行
$ rake test:functionals TEST="test/functional/hello_controller_test.rb"