[rspec-users] rspec2 not working with shoulda

Phillip Koebbe phillipkoebbe at gmail.com
Wed Aug 11 14:21:43 EDT 2010


  On 2010-08-11 12:29 PM, Craig Demyanovich wrote:
> On Wed, Aug 11, 2010 at 12:53 PM, Nadal <node.js99 at gmail.com 
> <mailto:node.js99 at gmail.com>> wrote:
>
>     I posted a question on shoulda forum. It is under moderation so I
>     don't have a link yet.
>
>     To the people who do not use shoulda: How would you write a test for
>     above case. I assume it would require set up a subject, set nil value,
>     and then see if there is an error message. I still think that for such
>     cases should macro is succint and does it job well unless I am missing
>     some new feature of rspec2.
>
>
> I don't yet use RSpec 2, but I don't think you're missing anything. 
> Shoulda may very well be a good fit for these kinds of examples.
>
> Since you asked, here's how I currently write examples like the ones 
> you posted.
>
> require 'spec_helper'
>
> describe User, "being valid" do
>   it "requires an email" do
>     user = User.new(:email => nil)
>     user.should_not be_valid
>     user.should have(1).error_on(:email)
>   end
>   it "requires a name" do
>     user = User.new(:name => nil)
>     user.should_not be_valid
>     user.should have(1).error_on(:name)
>   end
> end
>
> Regards,
> Craig

That's exactly what I used to do, also, until I switched to Remarkable. 
Now it's:

         before :each do
             @user = User.create(valid_user_hash)
         end

         should_validate_presence_of :first_name
         should_validate_presence_of :last_name
         should_validate_presence_of :email
         should_validate_uniqueness_of :email, :case_sensitive => false
         should_validate_format_of_email

One thing I have come to appreciate about this is being able to copy the 
should_* statements to my model and, using TextMate's column editing 
mode, remove the 'should_' and add an 's' at the end of 'validate' and 
I'm done. For all of the validations that Remarkable supports, the same 
options are supported as well. That's actually why I switch from Shoulda 
to Remarkable a year or so ago (things might have changed in Shoulda by 
now, though): Not all validation options were supported in Shoulda.

Peace,
Phillip



More information about the rspec-users mailing list