I ran into a very weird problem and after trying to solve it for like 3
hours now and Google not willing to help me I have to ask you guys.
I'm currently writing some Spec tests which fail because of some missing
seed data. So rspec spec/ fails with:
/Users/pbartels/Sites/brothelking/app/models/character.rb:175:in
`create_fund': Called id for nil, which would mistakenly be 4 -- if you
really wanted the id of nil, use object_id (RuntimeError)
Well, fine I said so I'll just run rake db:seed RAILS_ENV=test to seed
the database:
rake aborted!
Validation failed: Name has already been taken
...
/Users/pbartels/Sites/ror_project/spec/factories/reports.rb:132:in
`block in <top (required)>'
...
What the heck's got rake to do in the spec directory? I get the exact
same error when I start spork or rails s
When I run RAILS_ENV=test rake db:fixtures:load I also get "Called id
for nil..." which doesn't make sense to me?
In conclusion: Whatever I start/run it all fails inside some spec file
and I have absolutely no idea why everything is going into the spec
folder anyway?!
I don't even know where to start pasting files here so if anyone wants
to see any file, please tell me. I am kinda desperate now.
I think you've ran into several errors and, at this point your
environment is corrupted.
Try first to sanitize your test environment.
If possible, recreate your development database from scratch (drop it
and create it again), then run your migrations again to make sure you
have them all migrated.
Do not seed the database unless you need something for the application
to start properly.
After you have your pristine development database, run: rake
db:test:prepare, which will clone your dev database into your test
database, so you will have the same database structure on both,
development and test environment.
Then start running your specs. Try running 'rake spec', instead of
'rspec spec/' since rake spec takes care of the db:test:prepare, so it
might be redundant now, but once you get the habit of running this
way, you make sure your data env is clean when your tests start.
NOTE: Do not seed the test database, that's not a good practice, since
your tests scenarios need to be properly isolated to be reliable, you
want to make sure of cleanning the sensitive data and mock up the data
you need just before running the specific test scenario and not
before.
I ran into a very weird problem and after trying to solve it for like 3
hours now and Google not willing to help me I have to ask you guys.
I'm currently writing some Spec tests which fail because of some missing
seed data. So rspec spec/ fails with:
/Users/pbartels/Sites/brothelking/app/models/character.rb:175:in
`create_fund': Called id for nil, which would mistakenly be 4 -- if you
really wanted the id of nil, use object_id (RuntimeError)
Well, fine I said so I'll just run rake db:seed RAILS_ENV=test to seed
the database:
rake aborted!
Validation failed: Name has already been taken
...
/Users/pbartels/Sites/ror_project/spec/factories/reports.rb:132:in
`block in <top (required)>'
...
What the heck's got rake to do in the spec directory?
Have you tried reading the rest of the stack trace? It should show you
who is invoking the code at fault.