On Sep 27, 2007, at 12:41 PM, Pat Maddox wrote: > On 9/26/07, Simon Peter Nicholls <[EMAIL PROTECTED]> wrote: >> Just started looking at the Story Runner integration, and am >> converting a few Rails integration tests to get a feel for it. >> >> My integration tests relied on fixtures, and since my models have a >> significant amount of validation (and hence need valid data unless I >> save without validation), this has made setup easy. >> >> With stories however, I'm wondering what the recommended approach is. >> Mocks are out I assume, since the point is testing the stack, but are >> fixtures out too? Should we be meeting our more complex or repetitive >> setup needs by treating it as plain ruby code that needs refactoring >> via regular Ruby/OO techniques (Object Mother et al)? >> >> A typical scenario for me might involve a couple of users with >> different roles, plus a collection of other collaborating objects. >> >> Thanks >> _______________________________________________ >> rspec-users mailing list >> [email protected] >> http://rubyforge.org/mailman/listinfo/rspec-users >> >> > > I don't use fixtures (the yaml type, anyway) in story runner stories. > I construct objects in the given blocks. I find that that does two > things for me. First, it clearly expresses what a given really means. > So when I say Given "an activated user," I don't have to go dig > around some YAML files. If I need to understand it I can just look at > the code and see > u = User.create! :login => "pat" > u.activate > > Secondly, constructing your object graph instead of using fixtures > means you're actually exercising your code. With fixtures you just > instantiate some objects and fill them with data, which may not > necessarily be valid (they require maintenance). Also if you're using > stuff like before/after create hooks to create child objects, using > fixtures bypasses that. > > I look at fixtures as a weird kind of mock. You're not using the full > implementation, so what's the point really? I'd rather use a real > object or a proper mock object. In stories I don't use mocks at all, > so obviously I'll go for the full implementation. > > Pat > _______________________________________________ > rspec-users mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/rspec-users
+1 I've adopted a factory pattern for organizing my tests inspired by: http://www.dcmanges.com/blog/38 Carl _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
