RSpec测试失败,FactoryGirl,隔离时通过

时间:2015-05-04 18:24:44

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rspec factory-bot

我正在将应用程序从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个类似的情况都会失败,除非我单独运行它们。

思想?

2 个答案:

答案 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

RSpec errors when run en masse, but not individually