如果我的问题很愚蠢,我很抱歉,因为我只想问一下Ruby中的含义是什么。 (我正在为我的课程尽快读一本关于Rails的书,所以我对Ruby语言没有把握。)
这是一段用于单元测试目的的代码:
class ProductTest < ActiveSupport::TestCase
test "product attributes must not be empty" do // this line I don't know
product = Product.new
assert product.invalid?
assert product.errors[:title].any?
assert product.errors[:description].any?
assert product.errors[:price].any?
assert product.errors[:image_url].any?
end
我想问的是:在我不知道的那一行,语法test "...." do
,它是什么意思?它是一个函数,方法,类,还有什么?
答案 0 :(得分:2)
这是一个块。在测试框架的某个地方定义了这个方法:
def test(description, &block)
# do something with block
end
我高度建议您选择一本优秀的Ruby书,然后慢慢阅读 。
答案 1 :(得分:2)
这个东西被称为类宏,一个简单机制的奇特名称:
这是一个类方法(def self.test),这样你可以直接在你的类定义中使用它。例如。
编写测试用例的正常方法(在Test :: Unit中)更像是这样:
def test_something_interesting
...
end
但是,ActiveSupport(Rails的一部分)为您提供了这种语法糖,以便您可以这样写:
test "something interesting" do
...
end
然后,此方法将定义名为test_something_interesting的方法。
您可以在Rails中找到实现:
activesupport/lib/active_support/testing/declarative.rb