Forum: Ruby on Rails rake test:units failing.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
44999b12bbad1b498252b3ac60c3ab0f?d=identicon&s=25 Maulin pa (mpathare)
on 2008-12-01 20:14
Hello,
I am a rails beginner and am having some trouble running the unit tests
using rake. i am following the example in the simply rails 2 book.

I have a simple model with one field "name" and a validation for name
that it cannot be empty

my test file looks like this


   1. require 'test_helper'
   2.
   3. class LadderTest < ActiveSupport::TestCase
   4.
   5.   def test_create_ladder_name_error
   6.     l = Ladder.create(:name => nil)
   7.     assert l.error.on(:name)
   8.   end
   9.
  10. end

When I run rake test:units from the shell I get the following error

rake aborted!
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

I am running rails version 2.2.2

Does anyone know whats wrong? Thanks.
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-12-01 22:32
(Received via mailing list)
On Dec 1, 2008, at 2:14 PM, Maulin Pathare wrote:
>
>
> When I run rake test:units from the shell I get the following error
>
> rake aborted!
> You have a nil object when you didn't expect it!
> You might have expected an instance of ActiveRecord::Base.
> The error occurred while evaluating nil.[]
>
> I am running rails version 2.2.2
>
> Does anyone know whats wrong? Thanks.


Perhaps you need a line between 6 & 7 with:

    assert !l.valid?

Otherwise the error object associated to the model will not have been
created.

-Rob

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
44999b12bbad1b498252b3ac60c3ab0f?d=identicon&s=25 Maulin pa (mpathare)
on 2008-12-02 01:05
Rob Biedenharn wrote:
> On Dec 1, 2008, at 2:14 PM, Maulin Pathare wrote:
>>
>>
>> When I run rake test:units from the shell I get the following error
>>
>> rake aborted!
>> You have a nil object when you didn't expect it!
>> You might have expected an instance of ActiveRecord::Base.
>> The error occurred while evaluating nil.[]
>>
>> I am running rails version 2.2.2
>>
>> Does anyone know whats wrong? Thanks.
>
>
> Perhaps you need a line between 6 & 7 with:
>
>     assert !l.valid?
>
> Otherwise the error object associated to the model will not have been
> created.
>
> -Rob
>
> Rob Biedenharn    http://agileconsultingllc.com
> Rob@AgileConsultingLLC.com

Hey,
Thanks for the reply. The assert !l.valid? did not help. I still get the
same error.

When I run the command with the --trace command, I can see that rake
fails right after the execute db:test:purge step. I have included the
trace.

** Invoke test:units (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
rake aborted!
You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/tasks/databases.rake:341
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in
`invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in
`invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:588:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:577:in
`invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in
`invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/tasks/databases.rake:372
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:617:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:612:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:578:in
`invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in
`invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:588:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:585:in
`invoke_prerequisites'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:577:in
`invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:571:in
`invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:564:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2019:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1997:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in
`standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1991:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1970:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:2036:in
`standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake.rb:1967:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-12-02 01:20
(Received via mailing list)
I think you mean to have:

  l.errors.on(:name)
Note: 'errors', not 'error'

-Rob

On Dec 1, 2008, at 7:05 PM, Maulin Pathare wrote:

>>> The error occurred while evaluating nil.[]
>> Otherwise the error object associated to the model will not have been
> same error.
>
> When I run the command with the --trace command, I can see that rake
> fails right after the execute db:test:purge step. I have included the
> trace.

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
+1 513-295-4739
Skype:  rob.biedenharn
44999b12bbad1b498252b3ac60c3ab0f?d=identicon&s=25 Maulin pa (mpathare)
on 2008-12-02 01:26
Attachment: ladder.rb (67 Bytes)
Hey Rob,
That was a typo on my part. My code actually has l.errors.on(:name).
Heres the pastebin link to the code
http://pastebin.com/m7cae6ae3

Rob Biedenharn wrote:
> I think you mean to have:
>
>   l.errors.on(:name)
> Note: 'errors', not 'error'
>
> -Rob
>
> On Dec 1, 2008, at 7:05 PM, Maulin Pathare wrote:
>
>>>> The error occurred while evaluating nil.[]
>>> Otherwise the error object associated to the model will not have been
>> same error.
>>
>> When I run the command with the --trace command, I can see that rake
>> fails right after the execute db:test:purge step. I have included the
>> trace.
>
> Rob Biedenharn    http://agileconsultingllc.com
> Rob@AgileConsultingLLC.com
> +1 513-295-4739
> Skype:  rob.biedenharn
44999b12bbad1b498252b3ac60c3ab0f?d=identicon&s=25 Maulin pa (mpathare)
on 2008-12-02 01:52
I figured it out, and it was dumb!
I had commented out the test database settings from the database.yaml
file. uncommenting them fixed the problem :)
Ef3aa7f7e577ea8cd620462724ddf73b?d=identicon&s=25 Rob Biedenharn (Guest)
on 2008-12-02 02:37
(Received via mailing list)
On Dec 1, 2008, at 7:52 PM, Maulin Pathare wrote:

>
> I figured it out, and it was dumb!
> I had commented out the test database settings from the database.yaml
> file. uncommenting them fixed the problem :)
>

the dumb ones hurt the most ;-)

-Rob

Rob Biedenharn    http://agileconsultingllc.com
Rob@AgileConsultingLLC.com
This topic is locked and can not be replied to.