【问题标题】:Can we load multiple factories into the database in one shot?我们可以一次将多个工厂加载到数据库中吗?
【发布时间】:2012-10-30 11:28:36
【问题描述】:

刚开始使用工厂女孩。如果必须将工厂保存到数据库中,则必须运行 FactoryGirl.create().

但是有没有什么方法可以将工厂集合加载到数据库中,而不必在每个工厂上调用 create?

如果有任何帮助,我正在使用 Ruby 1.9.3、Rails 3.2.8 和 Factory Girl 4.1。

【问题讨论】:

    标签: ruby-on-rails-3 factory-bot testunit


    【解决方案1】:

    如果您需要一堆不同类型的工厂,您只需单独创建它们。您可以通过将其添加到您的 test_helper.rb 来减少冗长:

    include FactoryGirl::Syntax::Methods
    

    然后你可以像这样创建工厂:

    create(:factory_name)
    

    当然,如果你需要一堆相同类型的记录,你可以这样创建它们:

    5.times { create(:factory_name) }
    

    正如我在评论中提到的,在初始化测试框架时一举创建所有工厂会适得其反。 FactoryGirl 背后的想法是为每个测试用例或上下文提供您需要的数据。这避免了倾向于陷入夹具驱动方法的测试之间的依赖关系。

    【讨论】:

    • 还有其他方法可以做到这一点。例如,我有 20 个独特的工厂,我将如何创建所有这些工厂?
    • 在模型或数据方面是独一无二的?也许发布您的代码,这确实是一个重构问题。
    • 在数据方面是独一无二的,现在我正在寻找一种没有关联的模型的工厂。
    • 与固定装置的作用类似,即在初始化期间它们被转储到数据库中。考虑到工厂的能力,我不确定这是否是最好的做法,但我只是想知道工厂是否可以进行类似的生产。谢谢你的快速回复:)
    • 您不想在初始化时将所有测试数据转储到测试数据库中 - 或者如果您这样做,只需使用固定装置。 FactoryGirl 旨在创建任何特定测试或上下文所需的测试数据。
    猜你喜欢
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2020-12-25
    相关资源
    最近更新 更多