【问题标题】:How do you define trait using Fabrication您如何使用 Fabrication 定义特征
【发布时间】:2016-03-17 15:29:08
【问题描述】:

我正在学习如何在Rails 中使用fabrication,我们决定用制造替换我们所有的factory_girl 代码。

假设我们在factory_girl中有这段代码

FactoryGirl.define do
  factory :user do
  trait(:no_credits) { credits 0 }
  trait(:with_credits) { credits 300 }

您将如何在 Fabrication 中定义这一点?我浏览了他们的网站,但找不到任何关于此的内容。感谢您的帮助

【问题讨论】:

    标签: ruby-on-rails ruby factory-bot fabrication-gem


    【解决方案1】:

    看来您正在寻找Fabricator inheritance,这是文档所说的:

    您可以使用:from 属性从其他制造商那里继承属性。

    Fabricator(:llc, from: :company) do
      type "LLC"
    end
    

    设置:from 选项将从命名的Fabricator 继承类和所有属性。

    您还可以使用:class_name 参数显式指定要构造的类。

    Fabricator(:llc, class_name: :company) do
      type "LLC"
    end
    

    【讨论】:

    • 你确定继承吗?因为trait 更像是定义自定义属性。在我的示例中,user 将具有 credits 0。我认为继承不是正确的方法。
    • 您可以在基类上定义默认值,每个继承的类都会覆盖其中的一些默认值。我认为它会按照您的预期运行。试一试,告诉我它是否有效:)
    • 在工厂女孩中,我们也有after(:create) 可以与trait 一起使用。你知道我可以用制造做类似的事情吗?
    • Traits 不是模型,因此您不能将Fabricator 与它们一起使用。我才意识到这一点
    猜你喜欢
    • 2015-01-21
    • 2014-10-07
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2019-05-03
    • 2021-11-22
    相关资源
    最近更新 更多