Могу ли я разделить вспомогательные модули на разные файлы, используя 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 только среда

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