【问题标题】:How can I decide the orders of auto-loading fixture into test database如何决定将夹具自动加载到测试数据库中的顺序
【发布时间】:2012-04-02 12:58:34
【问题描述】:

我得到了非常复杂的数据结构,需要按特定顺序将夹具数据加载到数据库中,但我不知道如何做到这一点。

【问题讨论】:

  • 夹具数据应该只是表格的内容。为什么表格的填充顺序很重要?
  • 例如,推文添加了user_id(外键),但用户表根本没有任何数据。这种填充会导致错误,不是吗?
  • 不应该这样做,只要在运行测试之前的某个时间点填充了用户表。你试过了吗?

标签: ruby-on-rails fixtures


【解决方案1】:

我建议研究一下factory_girl,一个固定装置的替代品。 factory_girl 不是手动创建数据以加载每个表,而是使用您的模型和关联来创建测试数据。来自wiki的示例工厂:

FactoryGirl.define do
  factory :user do
    first_name 'John'
    last_name  'Doe'
    age        { 1 + rand(100) }
  end

  factory :admin, :parent => :user do
    admin true
  end
end

然后在将测试配置为使用 factory_girl 之后,您可以简单地使用以下内容来创建模型:

# Saved instance
user = create(:user)

# Unsaved instance
user = build(:user)

如果您需要创建大量数据以重复用于多个测试,您可以将所有 factory_girl 调用包装到 test_helper 中的一个方法中,该方法可以被多个测试访问。

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 2015-03-18
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2011-06-07
    • 2017-08-27
    相关资源
    最近更新 更多