On Sep 29, 2007, at 12:42 AM, Jonathan Linowes wrote: > yes, i appreciate all the smartness built into it. > > I wonder if this idea could be extended to generate mocks, eg for my > controller specs > > user = mock_user( :email => "[EMAIL PROTECTED]" ) > etc > > not sure how far you could go with this, eg stubbing basic stuff > like .find > Just a thought
Certainly an interesting idea. My guess is that you would need to go a lot lower then stubbing find, Stubbing the connection parts of ActiveRecord. (In my ignorance, it ) Looks like a big project to me. Scott > > > On Sep 28, 2007, at 5:11 PM, Scott Taylor wrote: > >> >> On Sep 28, 2007, at 1:20 PM, Jonathan Linowes wrote: >> >>> Scott, >>> Thanks for the plug-in, http://thmadb.com/public_svn/plugins/ >>> fixture_replacement >>> I've started using it, replacing my ad hoc factory methods >>> And I like the idea of putting the factory in db/ >> >> Thanks for trying it out. I'd love to hear any feedback, or anything >> that you think should be changed. >> >>> >>> btw, for the record, while the Dan Manges blog was posted Aug 07, >>> the >>> first time I saw this technique is as a protected create_user method >>> in the acts_as_authenticated plugin test/user_test.rb (although not >>> to replace fixtures but to test against them :) >> >> Yeah, I'm sure I've seen that too - so maybe I stole one of the ideas >> from there, as well. (Actually, I think I got it from topfunky (the >> TDD peepcode), who in turn got it from technoweenie - Completely >> forgot about til' now. It's funny how good ideas can become >> unconscious like that...) >> >> The only really cool thing about the plugin is that it uses lambdas >> so that extra associations aren't created. Plus, it dries up >> the .create! and merge() that needs to be repeated over and over >> again (trust me - this will get tiring if you have something like 30 >> models). >> >> Regarding the lambdas: With the Dan Manges factory, if I do the >> following, I end up with two posts (not one): >> >> def create_comment(hash = {}) >> Comment.create!( >> { >> :post => create_post >> }.merge(hash) >> ) >> end >> >> # this yield one associated post (as expected) >> comment = create_comment >> >> # this yields an associated post, with an extra one which I don't >> care about (and which isn't associated) >> post = create_post >> comment = create_comment(:post => post) >> >> And this is because Ruby isn't lazily evaluated. So if you end up >> using the Dan Manges method, beware! >> >> Scott >> >>> >> >> _______________________________________________ >> 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 _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
