elixir - 我可以使用 ExUnit 和 Mix 将辅助模块拆分为不同的文件吗?
问题描述
几次失败的尝试和这里的文档让我相信我必须在我的 mix 项目中嵌套在模块 (that ) 下test/test_helper.exs
的其他文件中或其中一个文件中定义帮助模块。有没有办法在他们自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱或将它们放在下面?test/*.exs
use ExUnit.Case
test/test_helper.exs
lib/
解决方案
在您的mix.exs
文件中,您在项目声明中为不同环境定义不同的路径(在Mix.Project.project/0
回调中,键elixirc_paths
:
defmodule MyApp.MixProject do
use Mix.Project
def project do
[
...
elixirc_paths: elixirc_paths(Mix.env()),
...
]
end
然后为不同的环境提供不同的子句:
defp elixirc_paths(:test), do: ["lib", "test/helpers"]
defp elixirc_paths(_), do: ["lib"]
上面的路径将添加到 Elixir 编译的内容中,并且test/helpers
dir 中的所有代码将在运行时仅在 environment中运行项目时test
可用。
推荐阅读
- python - /api/register/ 'module' 对象的 TypeError 不可调用
- kubernetes - AKS 群集创建失败并出现错误“安全规则具有无效的端口范围”
- xamarin.forms - 图片太大
- github-pages - 从新创建的 github 页面获取 304 响应
- node.js - Keycloak:使用 keycloak-admin 为用户生成访问令牌
- node.js - err_http_headers_sent]:在从服务器获取电子邮件时,无法在将标头发送到客户端后设置标头
- node.js - node.js 中 express 和 process.on('uncaughtException) 处理的错误
- r - 为什么使用 mfrow() 时我的图会被拉伸?
- android - Java Lang NoSuchFieldError 可发布参考管理器
- kivy - 如何摆脱 Kivymd Hot reload Viewer Error