Elixir ExUnit:被测模块不可用

问题描述 投票:0回答:2

我正在关注本教程: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)
我错过了什么吗?

elixir elixir-mix
2个回答
16
投票

事实证明,该模块必须使用

.ex
扩展名而不是
.exs
,并且您需要运行
mix compile
来编译新模块。之后,
mix test
能够找到模块并且一切都按预期工作。


0
投票

参见 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
文件放在这里,然后测试文件就可以找到测试模拟模块。

© www.soinside.com 2019 - 2024. All rights reserved.