我正在将应用程序从Rails 3升级到Rails 4,并使用以下架构创建一个名为 item 的模型:
#===Schema Information
# Table name: items
#
#type :string
#maturity: string
和一系列测试的规范,但这个特别是我遇到的问题:
describe 'next_version' do
it 'should return the created_at date of the Item one version higher' do
first = FactoryGirl.create(:item, maturity: 'PRODUCTION')
second = FactoryGirl.create(:item, maturity: 'PREPRODUCTION', created_at: Time.now.in_time_zone)
expect(first.next_version_created_at.to_s)to eq second.created_at.utc.to_s)
修复,我相信很容易..只需添加..
created_at: Time.now.in_time_zone
..到生产项目并完成。但是,如果我自己运行测试,并且整个规范在Rails 3中通过(146次测试),测试就会通过,但是当我运行整个规范时,现在这一个和另外3个类似的情况都会失败,除非我单独运行它们。
思想?
答案 0 :(得分:2)
您可以尝试在每次测试前重新装载工厂女孩。尝试将此添加到spec_helper.rb
config.before(:each) do
FactoryGirl.reload
end
答案 1 :(得分:1)
通常,当您在测试数据库中没有正确清理数据时会发生这种情况。
确保您拥有:
config.use_transactional_fixtures = false
在spec_helper.rb或rails_helper.rb。
见这里:
rspec test passes in isolation, but fails when run with other tests