「Rails を使用したアジャイル Web 開発」を読んでいますが、単体テストが理解できません。
次のように定義されたモデルがあります。
class Product < ActiveRecord::Base
# .....
validates :price, numericality: {greater_than_or_equal_to: 0.01}
# .....
end
そしてテスト:
test "product price must be positive" do
product = Product.new(
title: "my title",
description: "yyy",
image_url: "zzz.jpg",
)
product.price = -1
assert product.invalid?
assert_equal ["must be greater than or equal to 0.01"],
product.errors[:price]
product.price = 0
assert product.invalid?
assert_equal ["must be greater than or equal to 0.01"],
product.errors[:price]
product.price = 1
assert product.valid?
end
なぜこれが必要なのですか:
assert_equal ["must be greater than or equal to 0.01"],
product.errors[:price]
エラー メッセージを比較する理由 次のようなテストを書く代わりに:
product.price = -1
assert product.invalid?, "must be greater than or equal to 0.01"
product.price = 0
assert product.invalid?, "must be greater than or equal to 0.01"