【问题标题】:Can I split helper modules into different files using ExUnit with Mix?我可以使用 ExUnit 和 Mix 将辅助模块拆分为不同的文件吗?
【发布时间】:2019-05-24 07:54:18
【问题描述】:

几次失败的尝试和文档here 让我相信我必须在test/test_helper.exs 或嵌套在模块(use ExUnit.Case)下的其他test/*.exs 文件之一中定义帮助模块我的混合项目。有没有办法在自己的文件中定义这些模块,以便测试可以使用它们,而不会弄乱test/test_helper.exs 或将它们放在lib/ 下?

【问题讨论】:

    标签: elixir elixir-mix ex-unit


    【解决方案1】:

    在您的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 目录中的所有代码将在运行时中可用仅在 test 环境中运行项目时

    【讨论】:

    • 太棒了。那行得通,谢谢。另一个细节是帮助模块应该有.ex 扩展。我终于想通了。
    • @matthiasdenu 好吧,我猜想强制 编译模块 扩展 ex(相对于 elixir 脚本 exs)超出范围在这里,因为它是 Elixir 范围内的约定,基本上与 OP 无关 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    相关资源
    最近更新 更多