一个人如何使用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