1

在 Python 的 setup.py 中,我们可以通过在需求下指定来指定应该作为鸡蛋下载和安装的依赖项test_requires。在 Elixir 的组合中,我如何指定我只想用于测试的依赖项?

4

1 回答 1

6

Mix 中的依赖被放置在一个名为 的私有函数deps中,这不是一个规则,它只是“部分”中deps条目的默认值project,见下文:

def project do
 [ app: :teste,
    version: "0.0.1",
    elixir: "~> 0.12.5-dev",
    deps: deps ] # It's here!
end

您可以为测试的依赖项声明一个deps函数并将deps上面的条目设置为deps(Mix.env). 这是一种告诉 Mixdeps使用来自MIX_ENV环境变量的参数进行调用的方法。

这个片段可以帮助你更好地理解,让我告诉你:

...

def project do
  [ app: :teste,
    version: "0.0.1",
    elixir: "~> 0.12.5-dev",
    deps: deps(Mix.env) ] # This is important :)
end

...

defp deps(:prod) do
   [ { :a_production_ready_dependency, github: "xpto/cool_project" } ] 
end

defp deps(:test) do
   [ { :some_project, github: "some_project/other" } ]
end

defp deps(_) do
   deps(:prod) ++ [ { :a_devel_dependency, github: "xpto_dev/cool_project_dev" } ]
end

...

defp deps(_)请注意,如果上述函数都不是模式匹配的,那么您仍然可以拥有一个默认的依赖关系列表。;)

然后你应该调用mix

MIX_ENV=test mix deps.get

这可能不是最好的方法,但我经常使用它,对我来说听起来很简单。

于 2014-03-16T02:00:55.960 回答