ExUnit - запуск кода установки БД один раз, перед всеми тестами

Доброе утро,

В моем проекте Elixir у меня есть особенно дорогой код установки базы данных, который вставляет необходимые данные в базу данных.

В настоящее время мои тесты работают так, что эти данные вставляются до любых тестов, которые нуждаются в них через @tag :insert_my_data построить. У меня есть код в моем тестовом помощнике, который делает что-то вроде:

setup tags do
  if tags[:insert_my_data] do
    # Run code here
  end
end

Проблема в том, что мне приходится запускать этот код сотни раз, и он медленный.

Лучше всего было бы, если бы код запускался один раз автоматически, до любого вызова mix testи функциональность отката транзакции, предоставляемая Ecto, будет сброшена до этого известного состояния (а не пустой базы данных).

Как я могу сделать это?

Спасибо!

0 ответов

Я знаю, что это старый вопрос, но он хороший, и он все еще появляется в результатах веб-поиска.

Другой способ запустить обратный вызов перед выполнением любых тестов - поместить его в test/test_helper.exs файл. По умолчанию он содержит только

ExUnit.start()

и он будет выполнен один раз, перед запуском теста, будь то просто mix test или нацеливание на подмножество тестов с чем-то вроде mix test test/path/to/file_test.exs:42,

Я чувствую, что это чище, чем модифицировать псевдонимы, если вы ориентируетесь только на тестовые прогоны.

Другие вопросы по тегам