I have a rails 3.0 application with complicated logic and was finding that 
changes to fix a bug would introduce another bug elsewhere.  I needed an 
automatic regression test tool so I could quickly know if this happened.  I 
am using cucumber for this.  I know that I am not doing BDD or TDD, but 
that is beside the point.

My initial set of scenarios was developed using capybara and seeding the 
database with test fixtures.  Although it mostly worked, there were 
problems because it was not exercizing the javascript on my web page, so I 
switched to selenium.  Now none of my scenarios worked.  sqlite3 was 
complaining about the database being locked because it can only handle one 
request at a time.  I tried switching to a mysql test database, but then 
the scenarios did not see the changes the application made to database.  
After much googling, I found that both of these problems were because 
selenium runs in a separate thread while capybara does not.  The suggested 
solution for this was to change the database cleaner strategy from 
transaction to truncate.  After this change, most of the scenarios ran, but 
for those using the scenario outline, only the first case would pass.  The 
following cases all found an empty database.  Truncate was deleting all the 
database records after the first case and not restoring it.  After more 
googling I found I could set the database cleaner strategy to nil.  Now all 
of my scenarios pass, but I have to be careful that no two scenarios use 
the same database records because database changes are not cleared between 
scenarios.  I also have been able to go back to using sqlite3.

Is there a better alternative?


-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msg/rubyonrails-talk/-/6LGGdyyH_0UJ.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to