Могу ли я разделить вспомогательные модули на разные файлы, используя ExUnit с Mix?
Пара неудачных попыток, и приведенная здесь документация заставляет меня поверить, что я должен либо определить вспомогательные модули в test/test_helper.exs
или в одном из других test/*.exs
файлы, вложенные в модуль (что use ExUnit.Case
) в моем смешанном проекте. Есть ли способ определить эти модули в их собственных файлах, чтобы тесты могли использовать их, не загромождая test/test_helper.exs
или положить их под lib/
?
1 ответ
В вашем mix.exs
файл, который вы определяете разные пути для разных сред в декларации проекта (внутри Mix.Project.project/0
обратный звонок, ключ elixirc_paths
:
defmodule MyApp.MixProject do
use Mix.Project
def project do
[
...
elixirc_paths: elixirc_paths(Mix.env()),
...
]
end
Затем вы предоставляете различные условия для разных сред:
defp elixirc_paths(:test), do: ["lib", "test/helpers"]
defp elixirc_paths(_), do: ["lib"]
Указанные выше пути будут добавлены к тому, что компилирует Elixir, и ко всему коду test/helpers
dir станет доступным во время выполнения при запуске проекта в test
только среда