My trouble arose in Chapter 11 of the Ruby on Rails Tutorial here.
I was seeing this rspec error:
Failure/Error: :user => Factory(:user, :email =&
I had trouble with the Integration tests shortly after Chapter 9.4. All of my controller tests and the request integration test blew up with the message 'Email has already been taken'
What I learned from RailsTutorial - chapter 8.4.3 - Test database not clearing after adding user in integration test is that you need to do something to clean up after integration tests, because unlike unit tests they may not clean up after themselves.
The solution presented there was to use the DatabaseCleaner gem, the implementation of which is also explained in the linked Question.
I think that if you don't implement some strategy for cleaning up after the integration test you will continue to have to use your 'shotgun' solution for cleaning up the DB every time you run the test suite. Definitely not fun.
This works for me:
bundle exec rake db:test:prepare
It's also in the tutorial.
For me, the issue seemed to be running Spork. After restarting it I can run the tests as many times as I need.
In my case problem was in equals emails in
factory :user
and
factory :user_with_additional_options
It helped, added to the file factories
sequence(:email) {|n| "person#{n}@example.com" }