Phoenix + ExUnit: где мне определить глобальных помощников?

Я использую Phoenix + ExUnit для тестов.

У меня есть несколько файлов ExUnit.Case, таких как DataCase, ConnCase..., для определения помощников тестов для моего Models, Controllers..., но если мне нужно определить глобальный помощник, который будет доступен из всех моих тестов, где я должен его определить?


person drinor    schedule 17.11.2019    source источник
comment
Просто создайте новый модуль, если это имеет смысл.   -  person Justin Wood    schedule 17.11.2019


Ответы (1)


Если речь идет только об одном помощнике, поместите его в свой test/test_helper.exs.

Но по мере роста проекта становится сложнее управлять. Общий подход заключается в создании папки test/support и изменении папки mix.exs следующим образом:

  1. Создайте приватную функцию следующим образом:
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
  1. Измените обратный вызов Mix.Project.project/0, включив в него следующую пару ключ/значение:
elixirc_paths: elixirc_paths(Mix.env())
  1. Поместите все файлы, содержащие модули, необходимые в среде test, только туда, как файлы *.ex.

Таким образом, все они будут скомпилированы в test и отброшены во всех других средах.

person Aleksei Matiushkin    schedule 17.11.2019
comment
Мне нравится второй вариант, но насчет test/test_helper.exs, это не модуль, как я могу добавить к нему хелперов? - person drinor; 18.11.2019
comment
Просто определите модуль (ы) там. - person Aleksei Matiushkin; 18.11.2019