RSpec failure: could not find table after migration...?

neezer picture neezer · Mar 10, 2011 · Viewed 9.8k times · Source

I have a naked rails 3 app with one model, generated using rails g model User.

I've added a factory (using factory_girl_rails):

Factory.define :user do |f|
  f.email "[email protected]"
  f.password "blah"
  f.password_confirmation "blah"
  f.display_name "neezer"
end

Then I've added one test:

require 'spec_helper'

describe User do

  subject { Factory :user }

  it "can be created from a factory" do
    subject.should_not be_nil
    subject.should be_kind_of User
  end

end

Then I migrate my database using rake db:migrate.

Then I run the test using rspec spec, and the test fails with the following:

Failures:

  1) User can be created from a factory
     Failure/Error: subject { Factory :user }
     ActiveRecord::StatementInvalid:
       Could not find table 'users'
     # ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>'
     # ./spec/models/user_spec.rb:8:in `block (2 levels) in <top (required)>'

I'm confused, because I did just migrate my database, and my schema.db file reflects that there is a users table present, so what gives?

I know this is a beginner question, but banging my head against a wall isn't working...

factory_girl (1.3.3)
factory_girl_rails (1.0.1)
rails (3.0.5)
rspec-rails (2.5.0)
sqlite3 (1.3.3)

Answer

Spyros picture Spyros · Mar 10, 2011

Try to execute

rake db:test:prepare

This should fix your tests db.