[rspec-users] More on collection proxies
dchelimsky at gmail.com
Wed Jan 24 10:15:07 EST 2007
On 1/24/07, Jay Levitt <lists-rspec at shopwatch.org> wrote:
> Jay Levitt wrote:
> > David Chelimsky wrote:
> >> User.should_receive(:validates_presence_of).with(:email)
> > Wow - I never thought of it like that. I think (as a new convert to
> > mocks) that type of mock is a little too specific and un-DRY for my
> > taste, though; it feels like specifying that "line 6 of method foo
> > should be an if statement". There's double-entry bookkeeping, and then
> > there's keeping two sets of books.
> While I'm out on this limb, I'm gonna say that, given the way Rails
> validations are structured, it's better to use state-based testing than
> interaction-based testing!
> validates_presence_of is a bad example, because the two methods are
> practically interchangeable. But consider a validation that uses a
> regex to verify a legal IP address. Do you want your specs to repeat
> the regex, or do you want to test various legal and illegal IP-address
> strings and see what breaks? To me, it's the second one that's actually
> testing the behavior of the application.
Another view would be that the Regexp is a separate component that
you'd want to test separately from the use of that component. So the
test that your model validates_format_of using a Regexp uses the right
one and then have other tests just for that Regexp.
> rspec-users mailing list
> rspec-users at rubyforge.org
More information about the rspec-users