4

mix testElixir アプリケーション内でプログラムでタスクを実行したいと考えています。これは で実行できますがMix.Tasks.Test.run/1、最初に環境変数を設定せずに実行しようとするとMIX_ENV、タスクの実行が拒否されます。

でenvを設定できSystem.put_env/2ますが、テストのみとしてマークされた依存関係で定義されたモジュールへの参照が見つかると、アプリケーションはクラッシュします。

この状況でこれらの依存関係を読み込むにはどうすればよいですか?

4

1 に答える 1

4

System.put_env/2 で env を設定できますが、テストのみとしてマークされた依存関係で定義されたモジュールへの参照が見つかると、アプリケーションはクラッシュします。

それはわざとです。Mix を開始する前に環境変数を設定する必要があります。そうしないと、Mix が間違った依存関係をロードします。

[preferred_cli_env: [my_task: :test]]新しいタスクを作成している場合、プロジェクト関数で設定することにより、それを実行するための優先環境を Mix に伝えることができます。それ以外には、MIX_ENV を明示的に設定する以外にオプションはありません。

于 2015-04-28T16:12:10.033 に答える