在java世界中,特定库的工件通常有两种形式,一种带有测试助手,另一种没有测试助手。在Elixir世界中是否存在等价物?
具体来说,我希望能够在应用程序A
中公开模拟或数据生成器。应用程序B
现在取决于A
,并且能够在自己的测试中使用来自A
的公开帮助程序。现在,我不希望这些帮助者出现在生产中的任何地方,因此只有在特别要求时才应包含这些帮助(例如,通过MIX_ENV=test
)。
编辑:基本上,问题归结为:"如何根据A
的{{1}}进行测试?"
答案 0 :(得分:0)
前段时间,我找到了一个可行的解决方案:我专门针对elixirc_paths
环境扩展了:test
并将共享的帮助程序放入了应用程序内的另一个目录(例如test/support
)。在mix.exs
中:
def project do
[
# ...
elixirc_paths: elixirc_paths(Mix.env),
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
然后,依赖的应用程序在测试环境中编译应用程序时可以使用test/support
中的模块。