0
这里是我的代码片段:FactoryGirl集合不会结转
context "(3) Integration" do
let(:ad) { create(:ad) }
let(:property) { create(:property, owner_id: 1) }
let(:visitor_session) { create(:visitor_session, property_id: property.id) }
let(:impression) { create(:impression, ad_id: ad.id, visitor_session_id: visitor_session.id) }
# before(:each) do
# DatabaseCleaner.clean_with(:truncation)
# end
describe "(a) An ad can check it's impressions" do
it do
expect(ad.impressions).to include impression
end
end
describe "(b) An ad can check the total impression count" do
it do
expect(ad.impressions.count).to eq 1;
end
end
end
第二次测试失败,当它真的应该传球,而我很大吃一惊。如果我在第一次测试的中间通行binding.pry,输出为ad.impressions
返回CollectionProxy:
#<ActiveRecord::Associations::CollectionProxy [#<Impression id: 1, start_at: "2014-12-05 17:17:40", duration: 10, is_valid: true, ad_id: 1, visitor_session_id: 1, created_at: "2014-12-05 17:17:49", updated_at: "2014-12-05 17:17:49">]>
调用此数,在撬控制台,返回1
当值我得到第二个测试,ad
似乎是在第一次测试相同的对象,除了现在它的印象CollectionProxy是一个空的数组。
我怀疑这可能是一个数据库清理问题,这就是为什么我评论它,但它似乎没有任何影响。这里是我的spec_helper对于那些需要更多的细节:
require 'factory_girl'
require 'database_cleaner'
require 'devise'
RSpec.configure do |config|
config.include Devise::TestHelpers, type: :controller
config.include FactoryGirl::Syntax::Methods
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
config.color = true;
end
为什么我收集的不是坚持到第二个测试?