2013-06-25 177 views
0
class CreateUsers < ActiveRecord::Migration 
    def change 
    create_table :users do |t| 
     t.string :name 
     t.timestamps 
    end 

    # Create sample User 
    User.create :name => "TestUser"  
    end 
end 

当运行rake db:createrake db:migrate命令记录为什么不进入轨测试数据库

在开发数据库它创建样本用户,但不是在测试数据库。我也希望这个用户在测试数据库中。任何原因?

也试过rake db:migrate RAILS_ENV=test

+0

您的个人资料可能没有在测试数据库足够的权限。 – vamosrafa

+1

尝试'rake db:migrate RAILS_ENV = test'。有没有错误信息? – Bjoernsen

+0

是的我试过这个命令'rake db:migrate RAILS_ENV = test',但它只是迁移模式不会在测试数据库中创建示例用户。 – Ashwini

回答

1

首先,您应该运行以下命令rake db:test:prepare以“准备”测试数据库。

最后,如果您希望在数据库中添加新记录,我建议使用以下文件db/seeds.rb

db/seeds.rb文件:

User.create(name: "TestUser") 

运行:

rake db:seed 
rake db:seed RAILS_ENV=test # for test env 
0

如果你正在测试用户为什么不创建一个夹具或使用rspec来测试这样的东西?上面的代码是不好的做法。我会这样做

迁移文件。

def self.up 
    create_table :users do |t| 
     t.string :name 
     t.timestamps 
    end 
    end 

根据您的测试栈我会建立像这样(yml fixture

david: 
name: David Smith 

你也可以使用与工厂女孩,这使得很多测试中轨容易RSpec的固定装置。

相关问题