Ruby on rails 与工厂进行Rails测试。事务唯一性问题

Ruby on rails 与工厂进行Rails测试。事务唯一性问题,ruby-on-rails,testing,transactions,shoulda,Ruby On Rails,Testing,Transactions,Shoulda,由于字段的唯一性约束,我在运行工厂时不断遇到验证错误。我正在用shoulda和工厂女孩。我有一个单元测试和一个功能测试,在数据库中创建了两个产品。我可以以任何顺序反复运行“rake test:units”和“rake test:functionals”,并且所有内容都是绿色的,但是当我运行“rake test”时,由于唯一性,我会得到错误,该测试会运行紧跟在functionals后面的单元 我还尝试在两个不同的单元测试中创建模型来打破唯一性,然后我也得到了错误 我一直在test_helper.r

由于字段的唯一性约束,我在运行工厂时不断遇到验证错误。我正在用shoulda和工厂女孩。我有一个单元测试和一个功能测试,在数据库中创建了两个产品。我可以以任何顺序反复运行“rake test:units”和“rake test:functionals”,并且所有内容都是绿色的,但是当我运行“rake test”时,由于唯一性,我会得到错误,该测试会运行紧跟在functionals后面的单元

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

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

class ActiveSupport::TestCase
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures  = false
end
事务性固定装置设置是否对工厂产生任何影响。在测试之间清理数据库的最佳方法是什么?

(叹气..)

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

class UserTest < Test::Unit::TestCase
classusertest
但是,要使事务性装置设置产生任何效果,您需要通过声明类从ActiveSupport::TestCase继承

class UserTest < ActiveSupport::TestCase
classusertest
希望这能帮别人节省一些时间