0

在《使用 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 语句,为什么“必须大于...”字符串周围需要括号。我假设变量类型在这里发挥作用,但需要澄清原因。

谢谢。

4

1 回答 1

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
于 2012-11-04T20:13:42.090 回答