2013-06-25 8 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:create и rake 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 с фабричной девушки, которая делает тестирование намного проще в рельсах.