gpt4 book ai didi

ruby-on-rails - 如何在多个文件中拆分 factory_girl 定义?

转载 作者:行者123 更新时间:2023-12-04 01:09:20 25 4
gpt4 key购买 nike

我的 factories.rb随着时间的推移,文件变得太大而无法维护,我现在试图将其拆分为 factories 中的许多文件目录。问题是我不知道如何处理依赖项。

长话短说,我正试图按照以下方式拆分我的工厂。所有序列转到 sequences.rb文件和每个工厂定义转到单独的文件,如下所示:

工厂/序列.rb

FactoryGirl.define do
sequence :name {|n| "Name #{n}" }
sequence :email {|n| "person#{n}@example.com" }
end

工厂/用户.rb
FactoryGirl.define do
factory :user do
name
email
end
end

工厂/post.rb
FactoryGirl.define do
factory :post do
name
content "Post Content"
user
end
end

当我运行测试时,我得到 name未定义错误。我可以通过将一个块传递给每个关联(例如 nameemailuser 等等)来解决这个问题,但它似乎很难看而不是 DRY。
  • 有没有办法让factory_girl知道应该加载哪些文件的顺序?
  • 当无法通过更改文件的加载顺序来解决此问题时,如何处理复杂的依赖关系?
  • 最佳答案

    您可以使用 generate 方法简单地实现结果:

    # factories/sequences.rb
    FactoryGirl.define do
    sequence(:email) { |n| "person#{n}@example.com" }
    end

    # factories/user.rb
    FactoryGirl.define do
    factory :user do
    email { generate(:email) }
    password '12345678'
    end
    end

    那就试试吧:
    FactoryGirl.create :user
    => #<User:0x007fa99d2ace40
    id: 1,
    email: "person1@example.com",
    . . .>

    Sequences Documentation 了解更多详情。

    关于ruby-on-rails - 如何在多个文件中拆分 factory_girl 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862202/

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