On Feb 22, 2010, at 6:07 PM, Rick DeNatale wrote: > I thought that it might be worth starting a discussion about the best > approaches to deal with spec'ing what's becoming more and more common > in apps using active record. > > It started with named scopes, now we have arel, and the old find calls > with parameters are being deprecated. > > When I watched Ryan Bate's latest opus > http://railscasts.com/episodes/202-active-record-queries-in-rails-3 > this morning I decided it might be good to bring my concerns up. > > The problem of course is that we're going to get used to writing more > code like this: > > Article.where("published_at <= ?", Time.now).includes(:comments) > >> From one aspect, I find all this very nice. It makes writing queries > easier and much more readable. > > On the other hand these are the kind of "train wreck" violations of > the "strong suggestion of Demeter" which makes mocking and stubbing > difficult among other things. > > Thoughts?
I haven't spent enough time with it yet to know, but I suspect that surface mocking (what is usually called stubbing in this community) is going to get harder with the demeter violations. OTOH, I guess as there is more structure to a query, it might be easier to create a more general & dynamic mock library for it - something like lafcadio's mocking library or fakefs. With a mocking library like that out there, we'll have faster test suites. I'm hoping that it totally obliviates the need for a library like guillotine (http://github.com/smtlaissezfaire/guillotine). Scott > > -- > Rick DeNatale > > Blog: http://talklikeaduck.denhaven2.com/ > Twitter: http://twitter.com/RickDeNatale > WWR: http://www.workingwithrails.com/person/9021-rick-denatale > LinkedIn: http://www.linkedin.com/in/rickdenatale > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users