Rails用工厂测试。交易唯一性问题

时间:2010-03-22 10:37:12

标签: ruby-on-rails testing transactions shoulda

由于字段的唯一性限制,我在运行工厂时不断收到验证错误。我正在使用带有factory_girl的shoulda。我有一个单元测试和一个功能测试,在数据库中创建了2个产品。我可以按任何顺序一遍又一遍地运行'rake test:units'和'rake test:functionals',一切都是绿色的但是当我运行'rake test'运行单位后跟功能时我会因为唯一性而出错

我还尝试创建模型以在2个不同的单元测试中打破唯一性,然后我也得到了错误。

我一直在test_helper.rb中使用这些设置,但无法正常工作

class ActiveSupport::TestCase
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
end

transactional_fixtures设置是否会影响工厂。什么是在测试之间处理数据库清理的最佳方法?

1 个答案:

答案 0 :(得分:1)

(叹气..)

所以问题是我从shoulda文档复制代码并最终声明我的测试类如下:

class UserTest < Test::Unit::TestCase

但是,为了使事务夹具设置产生任何效果,您需要通过声明类来继承ActiveSupport :: TestCase

class UserTest < ActiveSupport::TestCase

希望这可以帮助拯救别人一段时间。