[rspec-users] stale records with integration testing?

Justin Ko jko170 at gmail.com
Tue Feb 14 10:28:11 EST 2012


On Feb 13, 2012, at 10:35 PM, David Chelimsky wrote:

> On Mon, Feb 13, 2012 at 9:04 PM, Justin Ko <jko170 at gmail.com> wrote:
>> 
>> On Feb 13, 2012, at 1:16 PM, Patrick J. Collins wrote:
>> 
>>> Hi,
>>> 
>>> I was writing an integration test for my user signup form (with
>>> capybara), and found that my test was failing due to a validation error:
>>> "email is already taken".  I'm a bit confused because I thought when I
>>> run "rspec spec/some_spec.rb", the test database would be wiped clear?
>>> 
>>> Is that not the case?
>>> 
>>> Patrick J. Collins
>>> http://collinatorstudios.com
>>> 
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>> 
>> You basically have two options to ensure a clean database:
>> 
>> 1.) Transactional examples:
>> 
>> RSpec.configuration.use_transactional_examples = true
>> 
>> 2.) DatabaseCleaner:
>> 
>> RSpec.configure do |config|
>>  config.before { DatabaseCleaner.start }
>>  config.after { DatabaseCleaner.clean }
>> end
>> 
>> Look into what those do. Let us know if you get stuck.
> 
> What Justin says is true if you're running in the same process. If
> you're using Capybara to run examples in-bro.wser, then option 2 will
> work for you, but option 1 will not.

You can still do this with an AR patch. Look at the "Transactions and database setup" in the Capybara README.

Using DatabaseCleaner with truncation is SLOW.

> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list