我对 FactoryGirl 有疑问。我创建了一个单独的文件,在哪里:
shared_context 'basic organization structure' do
subject(:organization) { FactoryGirl.create_list(:organization, 2) }
end
并将其连接到测试,如 include_context。当我运行测试时,我看不到测试数据库中的数据。它们仅在测试中显式调用时出现。我如何确保在测试数据之前存储在数据库中?
我对 FactoryGirl 有疑问。我创建了一个单独的文件,在哪里:
shared_context 'basic organization structure' do
subject(:organization) { FactoryGirl.create_list(:organization, 2) }
end
并将其连接到测试,如 include_context。当我运行测试时,我看不到测试数据库中的数据。它们仅在测试中显式调用时出现。我如何确保在测试数据之前存储在数据库中?
我假设您正在使用database_cleaner在测试之间清理数据库?如果是这样,您有 2 个选择:(a)如果您希望组织列表在您的测试套件中持续存在,请将其添加到 seed.rb 文件并将database_cleaner策略设置为:transaction或(b)before(:each) do在每个测试中使用一个块来创建组织在数据库中的每个测试之前明确列出。
(在测试运行时查看数据库没有什么意义,因为database_cleaner擦除数据库的速度如此之快,以至于您不太可能在记录被删除之前看到它们。)
你混合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