簡體   English   中英

Elixir的混合物中是否有類似test_requires的東西?

[英]Is there something like test_requires in Elixir's mix?

在Python的setup.py中,我們可以通過在test_requires下指定要求來指定應下載並以雞蛋形式安裝的依賴項。 在Elixir的混合中,如何指定僅用於測試的依賴項?

Mix中的依賴項放置在名為deps的私有函數中,這不是規則,它只是project “部分”中deps條目的默認值,請參見下文:

def project do
 [ app: :teste,
    version: "0.0.1",
    elixir: "~> 0.12.5-dev",
    deps: deps ] # It's here!
end

您可以為測試的依賴項聲明deps函數,並將上面的deps條目設置為deps(Mix.env) 這是一種告訴Mix使用來自MIX_ENV環境變量的參數調用deps的方法。

該代碼段可以幫助您更好地理解,讓我向您展示:

...

def project do
  [ app: :teste,
    version: "0.0.1",
    elixir: "~> 0.12.5-dev",
    deps: deps(Mix.env) ] # This is important :)
end

...

defp deps(:prod) do
   [ { :a_production_ready_dependency, github: "xpto/cool_project" } ] 
end

defp deps(:test) do
   [ { :some_project, github: "some_project/other" } ]
end

defp deps(_) do
   deps(:prod) ++ [ { :a_devel_dependency, github: "xpto_dev/cool_project_dev" } ]
end

...

請注意,在上述功能均未與模式匹配的情況下,您仍然可以使用defp deps(_)擁有默認的依賴項列表。 ;)

然后,您應將mix稱為:

MIX_ENV=test mix deps.get

這可能不是最好的方法,但是我經常使用它,對我來說聽起來很簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM