How to rollback commits in Behat functional tests with Symfony2 and Doctrine?
Asked Answered
S

1

1

I'm writing functional tests with Behat and Mink in a Symfony2 application.

I make use of the data that's already in the database to make the tests instead of adding fixtures (a lot would be needed).

Therefore, I can't use a SQLite database only for the test environment as data would not be available.

My tests work fine, but data is persisted in the database when tests are run.

How can I automatically clean up data that's been persisted with Doctrine after a scenario is run?

I can't use a transaction as functional tests involve page redirections (e.g. the form is filled and posted to an other Symfony2 action).

Sanburn answered 19/6, 2013 at 15:37 Comment(0)
B
1

if you're persisting data I see no way to automatically revert everything. I would simply make a copy of the database, do the tests on it and drop it afterwards.

Burr answered 20/6, 2013 at 9:4 Comment(2)
Ok, thanks for your answer. I tried to extend the EntityManager class, neutralize the commit method and make use of it in the test environment. But it seems there's no easy way to use an other EntityManager class...Steffaniesteffen
Some time later, it's of course much better to copy the database or initialize a copy with the database with data fixture.Steffaniesteffen

© 2022 - 2024 — McMap. All rights reserved.