Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 自定义混合任务未加载测试环境_Elixir_Elixir Mix - Fatal编程技术网

Elixir 自定义混合任务未加载测试环境

Elixir 自定义混合任务未加载测试环境,elixir,elixir-mix,Elixir,Elixir Mix,我正在尝试组合一个自定义混合任务,该任务将以专门的方式执行mix test任务。我的混合任务是混合测试 到目前为止,我已经编写了世界上最基本的自定义混合任务: defmodule Mix.Tasks.Test.Pretty do use Mix.Task @shortdoc "Simply runs the Hello.say/0 function" def run(_) do Mix.env(:test) Mix.Task.run("test", ["--for

我正在尝试组合一个自定义混合任务,该任务将以专门的方式执行
mix test
任务。我的混合任务是
混合测试

到目前为止,我已经编写了世界上最基本的自定义混合任务:

defmodule Mix.Tasks.Test.Pretty do
  use Mix.Task

  @shortdoc "Simply runs the Hello.say/0 function"
  def run(_) do
    Mix.env(:test)

    Mix.Task.run("test", ["--formatter", "ExPrettyTest.Formatter"])
  end
end
不幸的是,当我运行任务(
mix test.pretty
)时,我得到了以下错误:

**(RuntimeError)无法使用池DBConnection.ConnectionPool调用沙盒操作。要使用SQL沙盒,请配置 存储库池为:

pool: Ecto.Adapters.SQL.Sandbox

(ecto_sql) lib/ecto/adapters/sql/sandbox.ex:491: Ecto.Adapters.SQL.Sandbox.lookup_meta!/1
(ecto_sql) lib/ecto/adapters/sql/sandbox.ex:389: Ecto.Adapters.SQL.Sandbox.mode/2
(elixir) lib/code.ex:767: Code.require_file/2
(elixir) lib/enum.ex:765: Enum."-each/2-lists^foreach/1-0-"/2
(elixir) lib/enum.ex:765: Enum.each/2
(mix) lib/mix/tasks/test.ex:369: Mix.Tasks.Test.run/1
(mix) lib/mix/task.ex:316: Mix.Task.run_task/3
(mix) lib/mix/cli.ex:79: Mix.CLI.run_task/2
(elixir) lib/code.ex:767: Code.require_file/2
似乎没有加载测试环境——可能没有加载test_helper.exs

我可以像这样运行任务:
MIX\u ENV=test MIX test.pretty
,它工作得很好。我希望在每次运行任务时都能将MIX_ENV=test放入其中,这样就可以工作了。在我看来,定制测试的全部意义在于避免手动指定环境和格式化程序参数

我的工作流程是运行
mix-test
,如果有错误,我想运行
mix-test.pretty
,它使用ExUnit中的自定义格式化程序机制为我提供了美妙的测试输出。一旦我确定了错误,我可以选择是否正确运行文件,是否正确运行单个测试,等等


谢谢

您是否尝试过在mix.exs文件中设置preferred_cli_env

发件人:

可能是这样的:

preferred_cli_env: [
  "test.pretty": :test
]

在您的
def项目中执行。。。结束

锁定它。非常感谢。没问题:)。如果有人想知道为什么不能从脚本中设置它,就在这里添加这个。从文档中可以看出:
@preferred_cli_env不是从依赖项加载的,因为我们需要在加载依赖项之前了解环境