rails 3.1rc5中的测试套件问题

时间:2011-08-13 10:41:40

标签: ruby-on-rails rspec cucumber ruby-on-rails-3.1

我最近升级了一个正在处理rails 3.1rc5的应用程序..

在大多数情况下它很棒,但我的一些测试确实存在很奇怪的问题..

例如,在我的一个黄瓜规格中,我使用工厂女孩创建了一堆假记录..通常这样工作正常但似乎它不是出于某种原因创建记录..

所以我评论了所有工厂的东西,并用它代替了它:

c = Contact.new(:first_name => "SOMEONE", :last_name => "COOL", :dob => 10.years.ago, :sex => "male")
if c.save
  puts "MYCOUNT: #{Contact.count}"
else
  puts "EXPLOSIONS!!!"
end

将此作为黄瓜套件的一部分运行输出:

MYCOUNT: 0

所以联系人记录显然正在保存(并通过验证)但是当我调用count时它仍然没有出现?

为什么?

我正在使用:

Rails 3.1rc5

rspec的护栏

黄瓜轨

factory_girl_rails

我也应该注意到我正在使用太阳黑子(solr API)https://github.com/outoftime/sunspot

索引我的模型

1 个答案:

答案 0 :(得分:1)

听起来你的测试中有一个事务回滚:

1)交易开启

2)Contact.save成功(现在有合法的Contact实例和db记录)

3)出现问题,引发ActiveRecord :: Rollback

4)事务回滚,留下合法的Contact实例但没有db记录,count = 0

我不知道是什么原因导致这与你的Rails升级有关,但也许这会帮助你找到失败的东西。

编辑:

如果你拖尾你的log / test.log文件,你应该看到如果是这种情况就会发生回滚。您可以查看以前的数据库活动,以获得有关上一次成功的数据库操作的信息。

不是一门精确的科学,但可以帮助您确定是否是这种情况,并大致了解它的横向位置。