Hey guys, I appreciate the insight, and this brings me to my next question, and actually the next chapter in the book (specing models). I read that "most" developers shy away from view specs (for the most part - not always), and then if I understand both of you correctly....each of you tend to "do as little" with controller specs as absolutely necessary. So if that's the case is the main use of rspec within a rails app for the model and validation testing? I'm sure I will gain a little more insight on this as I progress into the next chapter, but it begged to be asked. In fact it's probably too much of a sweeping statement. As I think about this a little more I can see how each of these "little" things that rspec is used for add up to some major tools to help ensure good solid code. Just the re-factoring element which is more a philosophy than it is an actual syntactical element makes for nice DRY systems.
I guess this is more of a rhetorical post, but if someone wants to add their two cents go ahead. I have been taking my time through the Rspec book making sure I understand each element. I'm forcing myself to "really" understand it so I can develop better apps. Thanks again! Chris On Jul 21, 9:43 pm, Stephen Eley <sfe...@gmail.com> wrote: > 2009/7/21 internetchris <ch...@silhouettesolutions.net>: > > > When writing specs for controllers am I always > > going to mock the model? Are controllers always isolated from the > > actual model? > > Hi Chris, > > Pretty insightful of you. This is one of those philosophical > questions that tends to keep coming up. The only valid answer to it > is "YMMV" -- everyone seems to have a different comfort level with how > this is done. > > David Chelimsky advocates strong isolation and full model mocking for > controller specs. That's why you see it in the RSpec book and the > official RSpec site. Yehuda Katz pushes a more integrated approach of > spec'ing the *request* from soup to nuts rather than the controller's > code base; you can see that in Merb's testing helpers, or in this > video from last year's > RubyConf:http://rubyconf2008.confreaks.com/writing-code-that-doesnt-suck.html > > Both schools of thought have pros and cons, and both camps have their > followers. And then some people take an approach somewhere in the > middle, or use Cucumber exclusively, or use macro frameworks like > Shoulda or mock_resourceful, or do their own thing, or just throw up > their hands and don't test controller flow at all. > > Having said that -- I'll tell you what *I* do. I used to spec > everything. When I was learning RSpec I was quite zealous about it, > and I think that was a good experence. These days, though, I skip > specs for most of my controllers and declare the integration in > Cucumber features instead. I won't say that I *never* write controller > specs, but if I do it's usually because that controller does something > unusual. Maybe it pulls in a couple of different models, or it needs > to reply to "/login" instead of the default "person_sessions/new" or > it has a filter to load tabs. I'll spec that sort of interesting > behavior. If it's just a straight, looks-like-scaffold-code REST > controller, I usually don't spec it. And I certainly don't write > stubs for it. > > My typical feeling is that all that stubbing to set up controller > isolation is a lot of work for small risk. 90% of all Rails > controllers are pretty nearly identical to each other, and the "cookie > cutter" RESTful controller model is simple, well-understood and > thoroughly tested in the Rails core code. If it does break on me it's > probably because I made some sort of dependency error, like forgetting > to declare the route or using the wrong path in my views. That sort > of thing turns up in my integration testing (i.e. my Cucumber > features) and is always pretty easy to spot and fix. I don't really > gain anything by writing specs for generic execution paths that are > already tested in Rails itself. > > That's my approach. I'm not going to claim it's the _best_ -- just > that it's where my comfort level is right now. The way I do things > has changed before, and it will probably change again. You'll find > your own way of doing things too; and that's a Good Thing. > > In the meantime, you can't really lose by following the steps from the > RSpec Book as you're starting out. Even if you do decide that it's > too much overhead later on, having had the practice and developed the > discipline will help you to make smart decisions and develop your own > effective style. > > -- > Have Fun, > Steve Eley (sfe...@gmail.com) > ESCAPE POD - The Science Fiction Podcast Magazine > http://www.escapepod.org > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users