Могу ли я разделить вспомогательные модули на разные файлы, используя ExUnit с Mix? - PullRequest
0 голосов
/ 25 декабря 2018

Пара неудачных попыток, и документация здесь наводит меня на мысль, что я должен либо определить вспомогательные модули в test/test_helper.exs, либо в одном из других test/*.exs файлов, вложенных в модуль (что use ExUnit.Case) в моем смешанном проекте.Есть ли способ определить эти модули в их собственных файлах, чтобы тесты могли использовать их, не загромождая test/test_helper.exs или не помещая их в lib/?

1 Ответ

0 голосов
/ 26 декабря 2018

В вашем файле 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 .

...