我希望以编程方式在Elixir应用程序中运行mix test
任务。这可以使用Mix.Tasks.Test.run/1
来完成,但尝试在没有先设置MIX_ENV
环境变量的情况下执行此操作会导致任务拒绝运行。
我们可以使用System.put_env/2
设置env,但是一旦找到对标记为仅测试的依赖项中定义的模块的引用,应用程序就会崩溃。
如何在这种情况下加载这些依赖项?
答案 0 :(得分:4)
我们可以使用System.put_env / 2设置env,但是一旦找到对标记为仅测试的依赖项中定义的模块的引用,应用程序就会崩溃。
这是故意的。您需要在启动Mix之前设置环境变量,否则Mix将加载错误的依赖项。
如果要创建新任务,可以通过在项目功能中设置[preferred_cli_env: [my_task: :test]]
来告诉Mix运行它的首选环境。除此之外,除了明确设置MIX_ENV之外别无选择。