Spec::Rails, "model.should have(1).error_on(:attribute)" passes when?

Spec::Rails people,

I’m curious about:

  • model.should have(1).error_on(:attribute)

displayed in the URL below:
http://rspec.rubyforge.org/rspec-rails/1.2.2/classes/Spec/Rails/Extensions/ActiveRecord/InstanceMethods.html

The Rspec peepcode screencast suggests that
model.should have(1).error_on(:attribute)
should pass if
model.send(:attribute)
returns nil

For me, I get an exception from the rspec script.

My work-around is simple.

Instead of:

  • model.should have(1).error_on(:attribute)
    I Use:
    -model.send(:attribute).should be_nil

But now I have the question:

  • What kind of error causes:
    • model.should have(1).error_on(:attribute)
    • to pass ??

–b

On Mon, Mar 23, 2009 at 6:10 PM, Bjorn B. [email protected]
wrote:

should pass if
-model.send(:attribute).should be_nil

But now I have the question:

  • What kind of error causes:
    • model.should have(1).error_on(:attribute)
    • to pass ??

If you add this to your model:

validates_presence_of :attribute

Then this will pass

Model.new(:attribute => nil).should have(1).error_on(:attribute)

Cheers,
David

I added:

  • validates_presence_of :attribute

To my model.

The test now passes.

yay!!

Thanks David.

On Mar 25, 2009, at 1:37 PM, Phor G. [email protected] wrote:

I added:

  • validates_presence_of :attribute

To my model.

The test now passes.

Congrats! It took longer than it usually does, but you just
experienced the red and green parts of the red/green/refactor cycle.

Cheers,
David