elixir - 测试环境中的 Elixir (UndefinedFunctionError) 函数
问题描述
我在模块中有这段代码
alias Commerce.Cart.{Cart, CartMaster}
@spec call(Cart.t()) :: Cart.t()
def call(cart) do
cart
|> add_pets_adjustments()
|> CartMaster.recalculate_credit()
end
当我运行测试时出现此错误
** (UndefinedFunctionError) function Commerce.Cart.CartMaster.recalculate_credit/1 is undefined (module Commerce.Cart.CartMaster is not available)
我检查了 CartMaster 模块,名称是正确的
defmodule Commerce.Cart.CartMaster do
# ...
def recalculate_credit(cart) do
cart
|> remove_existing_credit_adjustment
|> remove_applied_credit()
|> apply_credit()
|> add_credit_adjustment()
end
end
我还将函数调用更改为
def call(cart) do
cart
|> add_pets_adjustments()
|> Commerce.Cart.CartMaster.recalculate_credit()
end
并得到了同样的错误
我检查了“_build/test/lib/app/ebin”并找到了Elixir.Commerce.Cart.CartMaster.beam
文件
调用该函数以检查调用函数中加载的模块
:app
|> :application.get_key(:modules)
|> elem(1)
|> Enum.filter(fn e -> String.contains?(to_string(e), "Commerce.Cart") end)
|> IO.inspect(label: :modules)
该模块显示在列表中
modules: [Commerce.Cart.Adjustment, Commerce.Cart.Cart, Commerce.Cart.CartMaster, ...]
在开发模式下运行应用程序并进行手动测试工作得很好,
我不知道它可能是什么。
解决方案
推荐阅读
- python - 在 Pandas-Python 中计算一个值并对另一个值求和
- reactjs - 你如何在 django rest 框架中实现 CSRF 令牌?
- php - php中exec()实现R代码的Rscript路径问题
- azure-active-directory - 通过托管标识角色分配从代码访问 Azure 文件?
- xamarin - 在 Xamarin 表单中为 Treeview 创建可绑定属性
- python-3.x - Python 3.8:合并 2 个复合列表
- bash - 通过 eval 和 function 保留 bash 返回代码
- c++ - Eclipse 找不到链接库 已解决
- csv - 使用 VBScript 从 CSV 文件中删除一列
- java - Java Crypto 尝试加密文件