Каков правильный способ запуска тестов для доступа к нескольким базам данных?Как протестировать приложение с несколькими базами данных Elixir (Phoenix, Ecto)
Я пишу крошечный API, который должен иметь доступ к нескольким базам данных.
я определил 2 Repos каждый оберточной другую базу данных:
# config/dev.exs, config/test.exs, ...
config :my_app, MyApp.DbStatusRepo,
adapter: Ecto.Adapters.Postgres,
....
config :my_app, MyApp.DbDefinitionRepo,
adapter: Ecto.Adapters.Postgres,
...
# lib/my_app/db_status_repo.ex
defmodule MyApp.DbStatusRepo do
use Ecto.Repo, otp_app: :my_app
end
# lib/my_app/db_definition_repo.ex
defmodule MyApp.DbDefinitionRepo do
use Ecto.Repo, otp_app: :my_app
end
Это работает при запуске сервера, но я не могу найти способ, чтобы запустить свои тесты без них ожидает параметр по умолчанию MyApp.Repo.
Я обновил (и добавил) псевдонимы для обоих РЕПО.
Я изменил все ссылки на Repo, но я уверен, что он не работает до запуска моего набора тестов.
Запуск тестовый набор дает следующее сообщение об ошибке:
(Mix) не удалось загрузить SourcesApi.Repo, ошибка:: nofile. Просьба передать надлежащее репо с опцией -r.
Передача другого репо с опцией -r ничего не меняет. Такая же ошибка.
Мои Env:
- Elixir: 1.1.1
- Phoenix: 1.0.3
- Ecto: 1.0.6
Спасибо за вашу помощь.
Спасибо большое. Я полностью пропустил то, что на самом деле выполнял тестовый помощник. Я добавил действия create & migrate для обоих репозиториев. Еще раз спасибо. –
На всякий случай кто-то наткнется на этот ответ, 'Mix.Task.run' прервет и вернет': noop', если одна и та же команда запускается более одного раза, независимо от аргументов. Если вы хотите сделать что-то подобное, вам нужно запустить 'Mix.Task.reenable (task)' для обеих задач, прежде чем запускать их для второго репо. –