On 7 Dec 2008, at 19:20, aslak hellesoy wrote:



On Sun, Dec 7, 2008 at 8:07 PM, Matt Wynne <[EMAIL PROTECTED]> wrote:
On 7 Dec 2008, at 17:56, Tero Tilus wrote:

2008-12-05 08:32, Jeff Talbot:
I want to clear out the database after every run so my tests are
isolated.

Maybe a minor detail, but I'd suggest you clear out the db _before_
each run.

I respectfully disagree :)

I respectfully disagree :-) Two reasons:

Firstly, this quickly leads to coupled tests. If test N+1 only passes if test N cleans up, test N+1 will fail if run in isolation.

I think you misunderstand me. All our cucumber tests automatically clean up the database after each scenario is run. No chance of nasty coupling nonsense, but they do all assume that they'll start with an empty database.

Secondly, if each test cleans up after itself, you can't manually look at the database to figure out why a test fails - there is no data!

Good point - I never thought of that!

I just think a cleanup *before* a run would have to be more indiscriminate, and therefor slower. Our strategy of keeping a list of tables touched during a scenario then truncating them in the After do block has worked very well for us. YMMV of course :)


Aslak


If I need this done, I can run rake db:test:prepare

I think the tests should clean up after themselves.

As you can see from the thread Ben linked to, it's pretty easy to watch what ActiveRecord is doing, and truncate all the tables that have been touched during a scenario.


Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com


_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com

_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to