我最近升级了一个正在处理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
索引我的模型答案 0 :(得分:1)
听起来你的测试中有一个事务回滚:
1)交易开启
2)Contact.save成功(现在有合法的Contact实例和db记录)
3)出现问题,引发ActiveRecord :: Rollback
4)事务回滚,留下合法的Contact实例但没有db记录,count = 0
我不知道是什么原因导致这与你的Rails升级有关,但也许这会帮助你找到失败的东西。
编辑:
如果你拖尾你的log / test.log文件,你应该看到如果是这种情况就会发生回滚。您可以查看以前的数据库活动,以获得有关上一次成功的数据库操作的信息。
不是一门精确的科学,但可以帮助您确定是否是这种情况,并大致了解它的横向位置。