仅当MIX_ENV最初未设置为" test"时才加载混合依赖项,标记为test。

时间:2015-04-28 15:03:38

标签: elixir mix

我希望以编程方式在Elixir应用程序中运行mix test任务。这可以使用Mix.Tasks.Test.run/1来完成,但尝试在没有先设置MIX_ENV环境变量的情况下执行此操作会导致任务拒绝运行。

我们可以使用System.put_env/2设置env,但是一旦找到对标记为仅测试的依赖项中定义的模块的引用,应用程序就会崩溃。

如何在这种情况下加载这些依赖项?

1 个答案:

答案 0 :(得分:4)

  

我们可以使用System.put_env / 2设置env,但是一旦找到对标记为仅测试的依赖项中定义的模块的引用,应用程序就会崩溃。

这是故意的。您需要在启动Mix之前设置环境变量,否则Mix将加载错误的依赖项。

如果要创建新任务,可以通过在项目功能中设置[preferred_cli_env: [my_task: :test]]来告诉Mix运行它的首选环境。除此之外,除了明确设置MIX_ENV之外别无选择。