стартовые направляющие в тестовой среде

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

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

потому что я пытаюсь выполнить код Ruby после того, как я загружу направляющие. Более конкретно то, что я пытаюсь сделать: запустите .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

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

Спасибо за любую справку.

ОБНОВЛЕНИЕ:

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

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

Я думал, что требование "spec/models/blog_spec.rb" файл сделает это, но это, кажется, не запускает тесты...

Спасибо за справку к настоящему времени.

8
задан Brian DiCasa 12 May 2010 в 09:45
поделиться

2 ответа

Вы знаете, что можно запускать юнит-, функциональные и интеграционные тесты из Rake, верно? Посмотрите вывод 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

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

6
ответ дан 3 November 2019 в 12:13
поделиться

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

ruby script/server -e test

и в вашем config / database.yml должно быть определение test env, например:

test:
  adapter: sqlite3
  database: db/test.sqlite3
  pool: 5
  timeout: 5000
9
ответ дан 3 November 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: