Wincent Colaiuta wrote: > El 7/9/2007, a las 5:36, Jay Levitt escribió: > > Very true that you shouldn't be testing ActiveRecord's validation > (Rails' own unit tests are there for that). > > But if you want to do truly *driven* BDD then you will have to test > something; in other words, *before* you go ahead and add this line to > your model: > > validates_presence_of :foo > > You need to write a failing spec for it first. Otherwise, why would > you write it? Doing BDD in its purest form you shouldn't be writing > *any* line of code without your specs driving it. This means the > familiar "write failing spec, write code, confirm working spec" cycle. > > So the question is, what is the best kind of spec to write to *drive* > the writing of your "validates_presence_of" lines? For some > validations it's quite easy. For others it is less straightforward. > There are probably multiple valid (or valid-ish) answers, but it's > sometimes difficult to know which one is best.
Well put! To me, if the spec I write is: Model.expects(:validates_presence_of).with(:digits) then I haven't written a spec at all - I've written the code I plan to write, and spelled it differently! The English version of that spec is: Model - should call validates_presence_of with parameter :digits That's just specifying what a line of my code should *say*, not how Model should *behave*. I really like Wincent's approach - test that valid input yields a valid response and that invalid input yields an invalid response. Jay _______________________________________________ rspec-users mailing list [email protected] http://rubyforge.org/mailman/listinfo/rspec-users
