在使用Rails的敏捷Web开发一书中,他们正在教授如何编写测试单元案例:
test "product price must be positive" do
product = Product.new(title: "By Book 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]
end
关于assert_equal语句,为什么在“必须大于......”字符串周围需要括号。我假设变量类型在这里发挥作用,但需要澄清原因。
感谢。
答案 0 :(得分:1)
model.errors[:field]
总是返回一个字符串数组,即使只有一个错误。
如果断言是在没有[
]
的情况下完成的,那么它总是错误的,因为它会将字符串与数组进行比较。
assert_equal "must be greater than or equal to 0.01", ["must be greater than or equal to 0.01"]
=> false
assert_equal ["must be greater than or equal to 0.01"], ["must be greater than or equal to 0.01"]
=> true