我可以使用带有Mix的ExUnit将帮助程序模块拆分为不同的文件吗?

时间:2018-12-25 20:41:21

标签: elixir mix ex-unit

几次尝试失败,文档here使我相信必须在test/test_helper.exs或嵌套在模块下的其他test/*.exs文件之一中定义帮助程序模块(我的混合项目中的use ExUnit.Case)。有没有一种方法可以在自己的文件中定义这些模块,以便测试可以使用它们而不会弄乱test/test_helper.exs或将它们置于lib/下?

1 个答案:

答案 0 :(得分: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"]

仅在test/helpers环境中运行项目时,以上路径将添加到Elixir编译的内容中,并且test dir中的所有代码将在运行时中可用。