Hi, On 9/17/07, David Chelimsky <[EMAIL PROTECTED]> wrote: > On 9/16/07, s.ross <[EMAIL PROTECTED]> wrote: > > While the spirit of BDD is to spec first and code second, many of us > > have legacy code. Worse, some of us have legacy code without very > > good coverage. Recognizing that *I* have such code, I created a > > script that grinds through your .rb files and creates placeholder > > specs for each public method. > > > > While it is more sensible to spec behavior of code function than of > > individual methods, this tool can help jump start a transition to > > that wonderful place. > > Hi Steve, > > There are tools that will do this for you on java projects and in > nearly every case that I've seen them used, the result has been 100 > line test methods, one per object method, that take the object through > multiple states, become impossible to understand, and often just get > commented out. > > Worse, even though you sell it as a tool for dealing with legacy code > (code without tests), it will end up becoming the tool people use and, > even worse than that, they'll think it's BDD because it creates specs > and not tests. > > I beg you (I'm on my knees as I'm writing this) to throw this > manuscript in the fire now!
Hmm, I've never heard of this approach (burning stuff) ending in joy... Perhaps what you'd like is a one line comment to be prepended to each spec file pointing to spec best/good practice? I'd nominate someone's(;) ) 'One expectation per example' page: http://rubyurl.com/2jw For example: # Visit the following page for an excellent illustration of how to specify code: # http://rubyurl.com/2jw Or, you might prefer that any newbie sees that for each method there are multiple 'it's' prepared? Or maybe the template pending text should read: "should specify one expectation per example" Given these are just clutter things for some expert who is extending existing code using a BDD approach, and they just want a skeleton of 'what's in there', you might ask for an '-e'xpert switch that turns these defaults off. Would that advance anything? My 2c. > FWIW, > David > > > Comments welcome (and please be kind about the > > code -- I know it needs refactoring :). > > > > svn: > > > > http://svn.calicowebdev.com/rspec_todo/trunk > > > > Excerpt from the readme: > > > > Usage is: > > > > ruby spec_todo.rb <options> <files> > > > > Options are: > > > > -m -- Wrap each file's spec in a module > > > > -u -- Use "it" with a block and a pending method rather than a "it" > > > > > > So, for example, I might use it as follows: > > > > ruby spec_todo.rb app/models/* app/controllers/* > > > > Here is a brief example of the output of this tool: > > > > > > #------------------------------------------------------------ > > # File: app/controllers/contact_controller_spec.rb > > #------------------------------------------------------------ > > > > require File.dirname(__FILE__) + '/../spec_helper' > > > > describe "A ContactController" do > > it "should do something sensible with index." > > it "should do something sensible with thank_you." > > end > > > > _______________________________________________ > > 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 > _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users