Как использовать ruby-on-rails приспособления для настройки (внешних) данных, которые не принадлежат rails app DB?

#ruby-on-rails #fixtures

#ruby-on-rails #приспособления

Вопрос:

Согласно моим требованиям, я создал модели для запроса внешней базы данных (отличной от той, которую использует приложение 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 ext_data

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

Ответ №1:

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

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

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

Комментарии:

1. Спасибо за предложение. Я думаю, что это ведет меня в правильном направлении. Но я не совсем уверен, как заставить мою тестовую среду использовать данные. Кроме того, в моей модели ext_db есть много разных методов, которые извлекают различные данные (и мне придется добавить больше в будущем), поэтому мне было бы проще, если бы я мог легко создавать больше тестовых данных. Именно по этой причине я думал о том, как загрузить файл YAML в хэш.