Rake test:units failing


#1

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. class LadderTest < ActiveSupport::TestCase
  3. def test_create_ladder_name_error
  4. l = Ladder.create(:name => nil)
    
  5. assert l.error.on(:name)
    
  6. end
  7. 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.


#2

On Dec 1, 2008, at 2:14 PM, Maulin P. 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 B. http://agileconsultingllc.com
removed_email_address@domain.invalid


#3

Rob B. wrote:

On Dec 1, 2008, at 2:14 PM, Maulin P. 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 B. http://agileconsultingllc.com
removed_email_address@domain.invalid

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:inexecute’
/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:inexecute’
/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:insynchronize’
/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:ininvoke_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:ininvoke_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:insynchronize’
/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:ininvoke’
/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:inexecute’
/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:inexecute’
/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:insynchronize’
/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:ininvoke_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:ininvoke_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:insynchronize’
/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:ininvoke’
/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:intop_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:intop_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:intop_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:instandard_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:inload’
/usr/bin/rake:19


#4

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 B. 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 P. 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 B. http://agileconsultingllc.com
removed_email_address@domain.invalid
+1 513-295-4739
Skype: rob.biedenharn


#5

I think you mean to have:

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

-Rob

On Dec 1, 2008, at 7:05 PM, Maulin P. 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 B. http://agileconsultingllc.com
removed_email_address@domain.invalid
+1 513-295-4739
Skype: rob.biedenharn


#6

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 :slight_smile:


#7

On Dec 1, 2008, at 7:52 PM, Maulin P. 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 :slight_smile:

the dumb ones hurt the most :wink:

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid