【问题标题】:Include FactoryGirl Factories包括 FactoryGirl 工厂
【发布时间】:2012-01-31 14:10:23
【问题描述】:

我使用的是 Factory Girl,而不是固定装置。我注意到,要使我的 FactoryGirl 类可用,我必须调用此代码

def setup
   super
   Factory( :li_store);
   Factory( :li_customer);
   ....

如果我的设置中或测试中的其他任何地方没有这些行,则不会创建我的 FactoryGirl 对象。有没有办法可以包括我的工厂?我尝试在测试顶部添加工厂文件的 require 语句,但它抱怨对象已经注册。

非常感谢任何帮助。

【问题讨论】:

    标签: ruby ruby-on-rails-3 unit-testing mocking factory-bot


    【解决方案1】:

    在您的测试中require 'factory_girl' 并将您的factories.rb 文件放在/specs/tests 下。

    factories.rb 文件如下所示:

    FactoryGirl.define do
      factory :li_store do
        this "dewdew"
        that "rrfr"
      end
    end
    

    在您的测试中,您只需调用

    var = Factory :li_store
    

    【讨论】:

    • 所以我没有办法告诉它“创建这个工厂中列出的所有对象”而不为我的 SomethingFactory.rb 中列出的每个对象调用“Factory :blah”?
    • 也许你误解了FG的概念?您可以在需要时通过 FG 创建新对象。它们是可预测的,并且可以根据需要进行更改或按顺序更改。这就是您可能知道的固定装置的优势。但是,您可以批量创建对象。不过我忘记了语法。它位于 FG 存储库的 getting_started.md 文件中。
    • 既然你提到它,我认为你是对的。我认为它们是为数据库播种以使其适合测试。感谢您的帮助和纠正我错误的思考过程。
    • FG 比静态数据强大得多,而且在这种情况下也更有用。您可以在需要的地方以您想要的方式介绍您的对象。不过到达那里有点困难。我也花了一些时间:)
    • 顺便说一句,把那些;放在你的代码中。您正在使用 Ruby 进行编码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多