131213_02:アジャイル開発本

タスクB:検証とユニットテスト

7.1 イテレーションB1 : 検証

app/models/product.rbを編集し、検証するコードを追加

class Product < ActiveRecord::Base

validates :title, :description, :image_url, presence: true

validates :price, numericality: {greater_than_or_equal_to: 0.01}

validates :title, uniqueness: true

validates :image_url, allow_blank: true, format: {

                with:  %r{\.(gif|jpg|png)$}i,

message: 'はGIF、JPG、PNG画像のURLでなければなりません'    

}

end

 

ここでテストを実行

depot> rake test

 

should create product, should update productでerrorが発生するため、有効なテストデータを指定することで解決。

test/functional/products_controller_test.rbに以下のコードを追加(6~11行)

 @update = {

      title:        'Lorem Ipsum',

      description:  'Wibbles are fun!',

      image_url:    'lorem.jpg',

      price:        19.95  

    }

 

アサーション

アサーションとは、心にあることをきたいするものをフレームワークに知らせる、単純なメソッド呼び出し。

 

テストフィクスチャ

テストの世界では、フィクスチャとは、テストを実行できる環境のことを指す。

 

7章まとめ

  • 必須フィールドの存在することを確認
  • 価格のフィールドが数値で1セント以上であることを確認
  • 商品名が一意であることを確認
  • 画像が所定の形式であることを確認
  • モデルに適用する制約に準拠するため、および新しく追加したコードを検証するために、Railsが用意したユニットテストを更新