一个人如何使用Test :: Unit切换使用transactional_fixtures进行一组测试?

我有一些思考 – 狮身人面像测试,我需要关闭事务以防止mysql锁,但这样做我打破了以前编写的许多其他测试,所以我需要能够切换设置。

我发现了关于rspec的类似问题,但没有找到Test :: Unit。

我试过self.use_transactional_fixtures = false这是允许sphinx测试通过的原因,但会导致其他人破坏。 我确信我可以在所有其他测试中将其设置为true,但这也需要所有其他测试包含代码片段,这也是混乱的。

我也尝试过uses_transaction :test_method_name ,但它与前面提到的方法相同。

在此先感谢您的帮助。

您应该能够将use_transactional_fixtures设置为false, 用于您拥有的sphinx相关测试,但是对于您拥有的其他测试,请将其保留为true。 关键是将测试分成不同的测试类。 所以在test_helper.rb中你仍然会:

 self.use_transactional_fixtures = true 

但是对于你的其他测试,你会做类似的事情

 class PostTest < ActiveSupport::TestCase # your normal post tests that require transactional fixtures end class SphinxRelatedPostTest < ActiveSupport::TestCase self.use_transactional_fixtures = false # your other tests end 

这应该意味着您的常规测试使用快速事务夹具运行,但rails将根据需要使用DELETE / INSERT方法。

您还可以使用uses_transaction为特定方法/测试禁用它们。

 class MyTest < ActiveSupport::TestCase uses_transaction :test_something test "something" do "test something like callback" end end