Help with Unit test

Hi, I have to test one of my models, but it uses a seed database.

How do I delete everything on my database and create it again from seed (default code for some examples) for every one of my unit tests?

Right now, when I run rake db:test:units (and if I put something on my code like User.all.count) it says that there 2 users at the database (but with nil paramters except id). If I do a setup code to create the new instances at the database (as I want), it creates them, but there are still those 2 trash users there which makes my model not to work.

Thanks in advance

Hi, I have to test one of my models, but it uses a seed database.

How do I delete everything on my database and create it again from seed (default code for some examples) for every one of my unit tests?

Right now, when I run rake db:test:units (and if I put something on my code like User.all.count) it says that there 2 users at the database (but with nil paramters except id). If I do a setup code to create the new instances at the database (as I want), it creates them, but there are still those 2 trash users there which makes my model not to work.

Thanks in advance

It is probably not the “optimal” way, but a “practical” way might be to do this:

WARNING: this will delete all data in development and test database !!

For the development database

rake db:drop
rake db:create
rake db:migrate
rake db:seed

For the test database

RAILS_ENV=test rake db:drop

RAILS_ENV=test rake db:create

RAILS_ENV=test rake db:migrate
RAILS_ENV=test rake db:seed

guard # Spork for RSpec

This works well as a set-up for rspec (and with static
seeded data, e.g. list of countries etc. available also
for the tests).

Maybe not optimal, but works well.

Alternatively, if you do not want to restart from scratch, just deleting all
users could be done with

rails console

User.delete_all

RAILS_ENV=test rails console

User.delete_all

Peter

I think most nowadays think that factories are the best way of
testing, using something like factory_girl. I think the
free-to-use-online tutorial railstutorial.org uses factories for
testing. That is a good tutorial anyway and well worth working
through.

If you don't want to use factories you should use fixtures for
populating the test database. I think the Rails Guide on testing
covers this. Then rails will automatically reset the test database
for each test. I would expect any good tutorial on rails to either
use factories or fixtures.

Colin

Thank you, I manage to do what I wanted with fixture.

Going to trying factory too as soon as I can.

Thanks for the help