有没有办法在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