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が用意したユニットテストを更新