factorygirl在测试之前保存数据

时间:2013-10-11 11:51:04

标签: ruby-on-rails factory-bot

我对FactoryGirl有疑问。我创建了一个单独的文件,其中:

shared_context 'basic organization structure' do
  subject(:organization)  { FactoryGirl.create_list(:organization, 2) }
end

并将其连接到像include_context这样的测试。当我运行测试时,我没有在测试数据库中看到数据。它们仅在测试中显式调用时出现。 如何在测试数据存储在数据库之前确保?

2 个答案:

答案 0 :(得分:0)

我假设您正在使用database_cleaner在测试之间清理数据库?如果是这样,您有两个选择:(a)如果您希望组织列表在测试套件中保持不变,请将其添加到seed.rb文件并将database_cleaner策略设置为:transaction或(b)在每个测试中使用before(:each) do块在数据库中的每个测试之前显式创建组织列表。

(测试运行时查看数据库没有什么意义,因为database_cleaner擦除数据库的速度非常快,你不可能在删除它们之前看到它们。)

答案 1 :(得分:0)

您混合了letsubjectsubject不代表变量/方法,因此它不像分配那样工作。

相反,使用let来表示变量(实际上它是一种方法),然后再对其进行处理。

shared_context 'basic organization structure' do
  let(:organization)  { FactoryGirl.create_list(:organization, 2) }
  subject {organization} # Note: use method name here, not symbol
end