4

我希望mix test在我的 Elixir 应用程序中以编程方式运行该任务。这可以通过 来完成Mix.Tasks.Test.run/1,尽管在不首先设置环境变量的情况下尝试这样做会MIX_ENV导致任务拒绝运行。

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

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

4

1 回答 1

4

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

那是故意的。需要在 Mix 启动前设置环境变量,否则 Mix 会加载错误的依赖。

[preferred_cli_env: [my_task: :test]]如果你正在创建一个新任务,你可以通过在你的项目函数中设置来告诉 Mix 运行它的首选环境是什么。除此之外,除了显式设置 MIX_ENV 之外,您别无选择。

于 2015-04-28T16:12:10.033 回答