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
,
Я чувствую, что это чище, чем модифицировать псевдонимы, если вы ориентируетесь только на тестовые прогоны.