In Rails 4.x we have transactional fixtures that wrap each test in a database transaction. This transaction rollbacks all the changes at the end of the test. It means the state of the database, before the test is same as after the test is done.
By default this functionality is enabled.
We can choose to disable it in a test case class
by setting the class attribute
1 2class FooTest < ActiveSupport::TestCase 3 self.use_transactional_fixtures = false 4end 5
Rails also comes with fixtures for tests.
So it may seem that
use_transactional_fixtures has something to do with the Rails fixtures.
A lot of people don't use fixtures and
they think that they should disable
they do not use fixtures.
To overcome this confusion, Rails 5 has renamed transactional fixtures to transactional tests making it clear that it has nothing to do with the fixtures used in tests.
In Rails 5, the above example will be written as follows.
1 2class FooTest < ActiveSupport::TestCase 3 self.use_transactional_tests = false 4end 5