我可以使用带有 Mix 的 ExUnit 将辅助模块拆分成不同的文件吗?
Can I split helper modules into different files using ExUnit with Mix?
几次失败的尝试和文档 here 让我相信我必须在 test/test_helper.exs
或嵌套在 a 下的其他 test/*.exs
文件之一中定义辅助模块我的混合项目中的模块(use ExUnit.Case
)。有没有办法在它们自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱 test/test_helper.exs
或将它们放在 lib/
下?
在您的 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
目录中的所有代码将在运行时 当 运行 test
中的项目时可用] 仅限环境.
几次失败的尝试和文档 here 让我相信我必须在 test/test_helper.exs
或嵌套在 a 下的其他 test/*.exs
文件之一中定义辅助模块我的混合项目中的模块(use ExUnit.Case
)。有没有办法在它们自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱 test/test_helper.exs
或将它们放在 lib/
下?
在您的 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
目录中的所有代码将在运行时 当 运行 test
中的项目时可用] 仅限环境.