我正在关注本教程:http://elixir-lang.org/getting-started/mix-otp/agent.html
因此,在我的 Elixir 项目中,我有一个模块
lib/kv/bucket.exs
,以及对其的测试 test/kv/bucket_test.exs
。
当我运行混合测试时,出现以下错误:
** (UndefinedFunctionError) undefined function KV.Bucket.start_link/0 (module KV.Bucket is not available)
我错过了什么吗?
事实证明,该模块必须使用
.ex
扩展名而不是 .exs
,并且您需要运行 mix compile
来编译新模块。之后,mix test
能够找到模块并且一切都按预期工作。
参见 https://hexdocs.pm/mix/1.14/Mix.Tasks.Compile.Elixir.html#module-configuration
:elixirc_paths - directories to find source files. Defaults to ["lib"].
所以我们在
:elixirc_paths
环境中定义test
来加载["lib", "test/support"]
,并在test/support
中,将你的模拟.ex
文件放在这里,然后测试文件就可以找到测试模拟模块。