我对FactoryGirl有疑问。我创建了一个单独的文件,其中:
shared_context 'basic organization structure' do
subject(:organization) { FactoryGirl.create_list(:organization, 2) }
end
并将其连接到像include_context这样的测试。当我运行测试时,我没有在测试数据库中看到数据。它们仅在测试中显式调用时出现。 如何在测试数据存储在数据库之前确保?
答案 0 :(得分:0)
我假设您正在使用database_cleaner在测试之间清理数据库?如果是这样,您有两个选择:(a)如果您希望组织列表在测试套件中保持不变,请将其添加到seed.rb文件并将database_cleaner
策略设置为:transaction
或(b)在每个测试中使用before(:each) do
块在数据库中的每个测试之前显式创建组织列表。
(测试运行时查看数据库没有什么意义,因为database_cleaner
擦除数据库的速度非常快,你不可能在删除它们之前看到它们。)
答案 1 :(得分:0)
您混合了let
和subject
。 subject
不代表变量/方法,因此它不像分配那样工作。
相反,使用let
来表示变量(实际上它是一种方法),然后再对其进行处理。
shared_context 'basic organization structure' do
let(:organization) { FactoryGirl.create_list(:organization, 2) }
subject {organization} # Note: use method name here, not symbol
end