在使用factory girls gem时,我们创建一个factories.rb文件,其语法为
FactoryGirl.define do
factory :model do
...
end
...
end
那么 FactoryGirl.define 语法到底意味着什么? 是不是类似
class FactoryGirl
def factory :model do
end
end
谢谢
最佳答案
FactoryGirl 与许多 Ruby gem 一样,定义了一种“领域特定语言”或 DSL,以简化配置。这是一种常见的模式。
您的示例如下所示:
FactoryGirl.define do
factory :model do
...
end
...
end
发生的事情是使用参数 :model
调用 factory
方法,该参数还传递了一个 block 。与往常一样,所讨论的方法可以自由决定如何处理该 block 。在这种情况下,它会在工厂生成过程中保存并稍后执行。
您对它的重新解释没有任何意义,因为这不是有效的 Ruby。不能使用符号作为参数说明符。请记住,factory
是一种预先存在的方法,而不是您当时定义的方法。
如果这一切都有点模糊,您需要对 block 进行更多试验,以了解它们在 Ruby 中的工作方式。它们用于多种用途,因此您需要了解每个函数如何设置对 block 可以执行的操作、应返回什么以及将调用多少次(如果有的话)的期望。
关于ruby-on-rails - Rails FactoryGirl 定义语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060947/