有没有办法在Elixir的ExUnit模块中testing私有函数?

defp定义的函数不会被导出,所以我不能在模块以外的地方执行它们。

不,没有办法通过ExUnit来testing它们。

我个人避免testing私有函数,因为通常你最终会testing执行而不是行为,只要你需要改变代码,这些testing就会失败。 相反,我通过公共职能来testing预期的行为,把它们分成小块,一致的块。

在您的模块定义中,您可以使用@compile指令来在testing环境中导出您的私有函数。

 defmodule Foo do @compile if Mix.env == :test, do: :export_all # This will be exported for tests defp bar() do ... code ... end end