2010-05-11 4 views
3

Я пытаюсь загрузить рельсы в тестовой среде, используя скрипт ruby. Я пробовал прибегая к помощи немного и нашел эту рекомендацию:стартовые рельсы в тестовой среде

require "../../config/environment" 
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test' 

Это, кажется, чтобы загрузить мое окружение хорошо, но моя база данных разработок все еще используются. Я делаю что-то неправильно?

Вот мой файл database.yml ... однако я не думаю, что это вопрос

development: 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: BrianSite_development 
    pool: 5 
    username: root 
    password: dev 
    host: localhost 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: BrianSite_test 
    pool: 5 
    username: root 
    password: dev 
    host: localhost 

production: 
    adapter: mysql 
    encoding: utf8 
    reconnect: false 
    database: BrianSite_production 
    pool: 5 
    username: root 
    password: dev 
    host: localhost 

Я не могу использовать

ruby script/server -e test 

, потому что я пытаюсь запустить рубиновый код после загрузки рельсов. Более конкретно, что я пытаюсь сделать: запустите сценарий базы данных .sql, загрузите рельсы и затем выполните автоматизированные тесты. Кажется, что все работает нормально, но по какой-либо причине рельсы, похоже, загружаются в среду разработки вместо тестовой среды.

Вот сокращенный вариант кода я пытаюсь запустить:

system "execute mysql script here" 

require "../../config/environment" 
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test' 

describe Blog do 
    it "should be initialized successfully" do 
    blog = Blog.new 
    end 
end 

мне не нужно, чтобы запустить сервер, мне просто нужно загрузить мои рельсы код базы (модели, контроллеры и т.д. ..), поэтому я могу запускать тесты против моего кода.

Спасибо за любую помощь.

UPDATE:

У меня есть среда рельсы в настоящее время погрузки. Теперь я пытаюсь запустить свои тестовые файлы в рамках своей задачи. Вот мой код:

require"spec" 
require "spec/rake/spectask" 
RAILS_ENV = 'test' 

namespace :run_all_tests do 
    desc "Run all of your tests" 

    puts "Reseting test database..." 
    system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\BrianSite_test_CreateScript.sql" 
    puts "Filling database tables with test data..." 
    system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\Fill_Test_Tables.sql" 

    puts "Starting rails test environment..." 
    task :run => :environment do 
    puts "RAILS_ENV is #{RAILS_ENV}" 
    require "spec/models/blog_spec.rb" 
    end 
end 

Я думал, что «/ спецификация/модель blog_spec.rb» файл потребуется сделать это, но это, кажется, не запускать тесты ...

Благодарности за помогите до сих пор.

+0

показать свою конфигурацию/базу данных.yml file – fl00r

+0

Хорошо, я не понял точной проблемы. Вы можете попытаться указать 'ENV [" RAILS_ENV "] =" test "требуют File.expand_path ('../../ config/environment', __FILE __)' ясно – fl00r

ответ

6

Вы знаете, что вы можете запускать свои подразделения, функциональные и интеграционные тесты от Рейка, не так ли? Проверьте выход rake -T test, чтобы узнать, как это сделать.

Если вам нужно что-то более обычное, вы можете создать свою собственную задачу Rake. Положите что-то вроде этого в файле в lib/tasks:

namespace :custom_tests do 
    desc "Run my custom tests" 
    task :run => :environment do 
    puts "RAILS_ENV is #{RAILS_ENV}" 
    system "execute mysql script here" 
    # Do whatever you need to do 
    end 
end 

В => :environment загружает текущую среду для вас. Затем вы можете запустить свою задачу в тестовой среде следующим образом: RAILS_ENV=test rake custom_tests:run

+0

Большое спасибо! Я довольно новичок в рубинах и рельсах и не знал возможности рейка. Теперь я просто пытаюсь запустить свои тестовые файлы в этой команде. Я обновил свой вопрос с помощью моего текущего кода. Спасибо еще раз за помощь. –

+0

О! Если вы используете Rspec, вы должны проверить плагин rspec-rails (http://wiki.github.com/dchelimsky/rspec/rails). Это даст вам много вспомогательных методов, связанных с Rails. Кроме того, он даст вам задачу Rake для запуска всех ваших спецификаций (спецификация rake). Вы также можете просмотреть скринкапы Peepcode о Rspec (http://peepcode.com/products/rspec-basics). Я нашел их очень полезными, чтобы начать меня. Приветствия! – agregoire

+0

Я заглянул в плагин rspec-rails, но для этого требуется, чтобы вы использовали миграции, а это я. Вот почему перед запуском моих тестов я столкнулся с проблемой запуска сценариев mysql и т. Д. –

9

начать тестовую среду вы должны запустить скрипт/сервер с -e парами:

ruby script/server -e test 

и в вашей конфигурации/database.yml должен быть Defenition из тестовой базы данных окр, то есть:

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 
27

Эта команда сделала это для меня. Я смог загрузить тестовую версию вместе с ее базой данных.

$rails s -e test 
Смежные вопросы