ruby-on-rails - Rails FactoryGirl 定义语法

标签 ruby-on-rails factory-bot

在使用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/

相关文章:

ruby-on-rails - 参数错误 : Factory not registered

ruby-on-rails - 如何一步建立一个带有子工厂的父工厂以通过验证

ruby-on-rails - 测试 Controller 使用 belongs_to 关联创建操作

javascript - 选择所有复选框javascript

ruby-on-rails - 您将如何使模型或 Resque worker 中的片段缓存过期?

javascript - 在 Rails 中使用 <%= image_tag> Bootstrap 模态

ruby-on-rails - FactoryGirl 中的 stub 方法

ruby-on-rails - RVM 错误 : "Unknown ruby interpreter version" when trying to verify an . rvmrc 文件

ruby-on-rails - 安装 atomic (1.1.16) 时出错,Bundler 无法继续

ruby-on-rails - 使用 FactoryGirl 创建具有所需关联的对象