gpt4 book ai didi

ruby-on-rails - assert_equal 语法

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:51 25 4
gpt4 key购买 nike

我无法理解正在阅读的一本书中的一段代码。

代码如下:

test "product price must be positive" do
product = Product.new(:title => "My 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].join('; ' )

product.price = 0
assert product.invalid?

assert_equal "must be greater than or equal to 0.01", product.errors[:price].join('; ' )
product.price = 1
assert product.valid?
end

形成我得到的 ruby​​ 文档:

assert_equal(exp, act, msg = nil)

如果可能,除非 exp == act 打印两者之间的差异,否则失败。

我假设这条线是正确的吗:

assert_equal "must be greater than or equal to 0.01" ,

意思是:

assert_equal ("must be greater than or equal to 0.01", , ) #with no act or msg.

另外,有人可以解释下一行使用的数组及其用途吗?

product.errors[:price].join('; ' )

我无法理解数组在哪里,作者通过加入实现了什么。

提前感谢您提供任何信息。

这本书是:Agile Web Development with Rails 4th Edition

最佳答案

完整的断言如下:

 assert_equal "must be greater than or equal to 0.01" , product.errors[:price].join('; ' )

这里,exp = "must be greater than or equal to 0.01" and act = product.errors[:price].join('; ' )

product.errors[:price] 是一个数组,接收多条错误信息。

.join(';') 链接到它会使所有错误消息与“;”连接在一起作为分隔符。

在这种情况下,只有一个错误(“必须大于或等于 0.01”),因此 join method只是返回相同的值而不添加分隔符。因此断言应该通过。

示例说明 join(';') 在这种情况下的行为:

> ['a', 'b'].join(';')
=> "a;b"

> ['a'].join(';')
=> "a"

关于ruby-on-rails - assert_equal 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com