我通常使用此步骤设置与factory_girl记录:

Given /^the following (.+) records?:$/ do |factory, table|
  table.hashes.each do |hash|
    Factory(factory, hash)
  end
end

和建立协会的时候,这里的身边工作,我的:

Given the following group record:
  | id | name |
  | 1  | foo  |
And the following item records:
  | name | group_id |
  | bar  | 1        |
  | baz  | 1        |
  # ...

我知道这是不好的。使用IDS使得整个事情的脆性和神秘从域中人的优势。

所以,我的问题是 - 什么是设置了factory_girl协会和喜欢的一个表参数的最佳实践上述

有帮助吗?

解决方案 2

只是回答我的问题:味酸

其他提示

可以在工厂中定义多个关联。结果 如下所示:

Factory.define :item do |item|
    item.name          "item_name"
end

Factory.define :group do |group|
    group.name          "group_name"
    group.items         { |items| [ items.association(:item), items.association(:item) ] }
end

做一个Factory(:group)将创建组uplet在这两个项目。

可以使用定义FactoryGirl黄瓜步骤:搜索 https://github.com/thoughtbot/factory_girl/blob/master /lib/factory_girl/step_definitions.rb

您可以设置在短短的一个黄瓜一步你的项目,你的组(S):

Given the following items exists:
  | Name     | Group        |
  | Foo      | Name: Bar    |
  | Foam     | Name: Bar    |
  | Food     | Name: Bar    |

当这样做这样,组“酒吧”的创建使用“find_or_create_by”的功能,所以在第一次调用创建组,下2个呼叫发现已经创建的组。

在这种方式,所有3个项目将有同组的“酒吧”,并根据您的需要,你可以创建任意多个分组的项目。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top