Rspec weird behaviour


#1

Hi,
I recently migrated from classic rails testing to Rspec, so I am
pretty new to the framework and still learning. I am getting weird
errors on an ActiveRecord model test, here is the basic class model
definition:

class Size < ActiveRecord::Base
has_many :quantities, :dependent => :destroy
validates_presence_of :name
validates_uniqueness_of :name, :case_sensitive => false
end

and this is the faulty spec:
it ‘new size should have an error on name’ do
Size.new.should have(1).error_on(:name)
end

the red response is:
‘new size should have an error on name’ FAILED
expected 1 error on :name, got 0

if I change the spec to read like this:
Size.new.should have(:no).error_on(:name)

I still get a red response:
‘new size should have an error on name’ FAILED
expected 0 error on :name, got 1

Guess the problem is the model class name (Size) as I don’t get such
weird stuff from other classes… can I fix this somehow?

Thanks

Andrea


#2

On 23 Mar, 10:41, andrea removed_email_address@domain.invalid wrote:

[cut]

BTW I am using rails 2.3.2, rspec and rails-spec version 1.2.0

Andrea


#3

On Mon, Mar 23, 2009 at 4:41 AM, andrea removed_email_address@domain.invalid wrote:

end
if I change the spec to read like this:
Size.new.should have(:no).error_on(:name)

I still get a red response:
‘new size should have an error on name’ FAILED
expected 0 error on :name, got 1

Guess the problem is the model class name (Size) as I don’t get such
weird stuff from other classes… can I fix this somehow?

Hi Andrea,

I just tried this myself (because I wanted to see if the class name
was really the problem) and “Size.new.should have(1).error_on(:name)”
passed for me. I also tried “Size.new.should
have(:no).errors_on(:name)” and that failed correctly. So something
else is amiss in this case.

If this persists, please submit a bug report to
http://rspec.lighthouseapp.com and include a zipped up app that I can
run to see the problem.

Thanks,
David


#4

On Mon, Mar 23, 2009 at 9:45 AM, Scott T. removed_email_address@domain.invalid
wrote:

validates_presence_of :name
expected 1 error on :name, got 0

if I change the spec to read like this:
Size.new.should have(:no).error_on(:name)

It should be have(0).errors_on(:name), AFAIK

have(:no).errors_on … actually works as advertised (converts to 0).


#5

andrea wrote:

end
if I change the spec to read like this:
Size.new.should have(:no).error_on(:name)

It should be have(0).errors_on(:name), AFAIK


#6

On 23 Mar, 13:10, David C. removed_email_address@domain.invalid wrote:

If this persists, please submit a bug report tohttp://rspec.lighthouseapp.comand include a zipped up app that I can
run to see the problem.

Thanks Dave, now everything works as expected, but I still don’t know
what was the problem.
First I duplicated the app, tested it and got the same bad results as
the original one. Then I started to remove stuff from the duplicated
app until I got the Size model specs pass. This happened when I
removed the Size controller specs file. Weird.
I went back to the original app, cut the code from the Size controller
specs file and run the specs… this time everything passed. I pasted
back the content to the Size controller file, saved and again all
specs run as they should… I feel really confused :slight_smile:

Regards
Andrea