On Wed, May 25, 2011 at 6:11 PM, Ken Egervari <ken.egerv...@gmail.com>wrote:
> On Wed, May 25, 2011 at 5:34 PM, David Chelimsky <dchelim...@gmail.com>wrote: > >> On May 25, 2011, at 2:00 PM, Ken Egervari wrote: >> >> I am using factory_girl, and I have discovered that it is chiefly >> responsible for making my tests run slow. >> >> I have posted a question about this on Stack Overflow: >> >> >> http://stackoverflow.com/questions/6128476/how-can-i-get-factory-girl-to-never-hit-the-database-if-i-am-calling-factory-buil >> >> Anyway, I was curious what you guys use to create Factories? >> >> 1. Do you put up with Factory_girl? >> 2. Did you configure Factory_girl differently to make it run faster? >> 3. Do you use something else? May I ask what? >> >> Thanks! >> >> Ken >> >> >> The factory girl docs on >> http://rubydoc.info/gems/factory_girl/1.3.3/frames offer a few options. >> Look for the :default_strategy option and the :factory option on >> association. >> >> HTH, >> David >> > > Yeah, :default_strategy helps somewhat... but not really. I have done a lot > of tests/profiling and even if I resorted to Factory.build() for everything, > it ends up being much slower than just making the objects myself. > > I won't get rid of factory_girl outright - it's a good little tool to have > when you need to create a mini-database, which happens quite a bit in > practice (testing scopes, and so on). > > But I think a good rule of thumb is not use it like a basic defacto > object-instantiation tool. Maybe that's my bad, but articles, screencasts, > etc. actually tell people to do this - and given it's performance > implications, I believe that should NOT be a best practice. > > For me, I will use normal Rails/Ruby objects until they become too > cumbersome to build in order to satisfy validations or when I need to put > something in the database because that is part of the test. Otherwise, it's > better to work with pure, transient objects that you create yourself. > > I have literally got my entire test suite to run in 25 seconds when it used > to run in over 90 before. That's quite a big jump - several times faster > than swapping to an in-memory database. > > I only wish I knew this when I started my Rails app and just following what > I believe to be the "true" best practice from the start. I guess I gotta > live and learn. I hope others don't fall into the same pitfall like I did > though. > > Ken > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users > Again, please bring it up with the factory_girl authors. I'm sure they would like to know there might be some performance issues. Thanks.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users