问题
I am in the process of upgrading my application to Rails 3. I started using Rspec 2 with Rails 3. I need to turn off transactional fixtures for some of my rspec tests. Prior I used the following code in my model specs
before(:all) do
ActiveSupport::TestCase.use_transactional_fixtures = false
end
after(:all) do
ActiveSupport::TestCase.use_transactional_fixtures = true
clean_engine_database
end
That now gives me the error:
Failure/Error: ActiveSupport::TestCase.use_transactional_fixtures = false
undefined method `use_transactional_fixtures=' for ActiveSupport::TestCase:Class
Is there a way to do this per test block in Rails 3 with Rspec 2?
回答1:
I'm looking for the answer to this question, came across this blog entry
It suggests to declare inside the describe block
describe "xxx" do
self.use_transactional_fixtures = false
...
I tried it with Rails 3.0.7 with RSpec 2.6.3, and looks like working.
回答2:
RSpec.configure do |config|
config.use_transactional_fixtures = true
end
回答3:
You can disable transactional fixtures globally by putting config.use_transactional_fixtures = false
on the spec_helper.rb. If you want to control them by test (e.g. use transactional just on some of them), you can set this behavior with DatabaseCleaner.
I've had a related problem when testing pages with javascript on the browser (a scenario that does not work with transactional fixtures). Here's how I managed to work around it: http://github.com/lailsonbm/contact_manager_app
来源:https://stackoverflow.com/questions/3907815/rails-3-and-rspec-2-turn-off-transactional-fixtures-for-individual-tests