I've written some integration tests that I'd like to run against a copy of my prod database before I push to production. This lets me test all of my routes are still correct, all of the pages render without errors and some of the multipage workflows work as expected.
When I run the integration tests it drops the database I've loaded and loads the test fixtures (as expected). How can I change this behaviour and keep the copy of my production DB I've loaded?
I needed to add aivarsak's Rake task
and also remove the
line from the test/test_helper.rb file (or create a new one you reference in your integration test files)
Integration tests calls db:test:prepare which calls db:test:clone_structure which calls db:structure:dump and db:test:purge
You can write your own task
To get this to work I had to specifiy the environment when calling the rake task, otherwise it would run the migrations on the development db and then run the tests on the test db; given the example from above
I had to execute the tests like so
Setting
self.use_transactional_fixtures = true
in your integration tests would be useful as well if you don't want to have to reload the production copy between each execution of the test.Otherwise, the integration test run will splat the data with whatever changes it makes.