首页 > 解决方案 > 我可以使用 ExUnit 和 Mix 将辅助模块拆分为不同的文件吗?

问题描述

几次失败的尝试和这里的文档让我相信我必须在我的 mix 项目中嵌套在模块 (that ) 下test/test_helper.exs的其他文件中或其中一个文件中定义帮助模块。有没有办法在他们自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱或将它们放在下面?test/*.exsuse ExUnit.Casetest/test_helper.exslib/

标签: elixirelixir-mixex-unit

解决方案


在您的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/helpersdir 中的所有代码将在运行时仅在 environment中运行项目时test可用。


推荐阅读