Как использовать приборы ruby-on-rails для настройки (внешних) данных, которые не принадлежат к базе данных приложения rails? - PullRequest
2 голосов
/ 29 апреля 2011

В соответствии с моими требованиями я создал модели для запроса внешней базы данных (отличной от той, которую использует приложение rails) для некоторых данных.

Я пытаюсь написать тесты для этих моделей и хочу отделить «образцы тестовых данных» от реальных тестов.

Я думал, что смогу поместить данные в файл yml и загрузить их в хеш, но это сработало: (

  • Добавлены примеры тестовых данных в имя файла прибора 'external_database.yml'
  • Вставьте приведенный ниже код в настройку, в тестовый файл

ext_data = YAML.load_file(Rails.root.to_s + "/test/fixtures/ext_data.yml")

  • Но я застрял с ошибкой ниже

1) Error: test_should_errorout_for_invalid_market_zip(ExtDBTest): ActiveRecord::StatementInvalid: Mysql::Error: Table 'rails_app_db.ext_data' doesn't exist: DELETE FROM <code>ext_data

  1. Какой лучший способ сделать то, что я хочу сделать?

1 Ответ

2 голосов
/ 29 апреля 2011

Полагаю, ваша проблема в том, что схема этой внешней базы данных не содержится в вашем файле schema.rb и / или в миграциях.Они используются для настройки вашей тестовой базы данных перед запуском тестов.

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

НесколькоСоединения с базой данных в модульных тестах, как правило, боль.Подумайте о создании sqlite-файла для данных внешних зависимостей и настройте тестовую среду для использования этого файла или его копии на случай, если вам нужно будет изменить данные.

...