有没有办法在doctests中使用模块别名?我不想每次都输入一个长名称。

defmodule SomeLongModuleName.SubModule do
  alias SomeLongModuleName.SubModule, as: SubModule

  @doc """
      iex> SubModule.method(%{property_a: 1, property_b: 2) # CompileError
      3
  """
  def method(%{property_a: a, property_b: b) do
    a + b
  end
end

上面的示例显示了一种情况,在这种情况下,我可能想使用别名来避免出现长行。可以在doctest中使用别名吗?

最佳答案

我可以想到两种方法,不必一次又一次地输入模块名称。

  • 在文档中使用插值并使用别名:
    defmodule SomeLongModuleName.SubModule do
      alias SomeLongModuleName.SubModule, as: SubModule
    
      @doc """
          iex> #{SubModule}.method(%{property_a: 1, property_b: 2})
          3
      """
      def method(%{property_a: a, property_b: b}) do
        a + b
      end
    end
    
  • 仅使用不带模块的函数名,并在从测试中调用doctest时,添加import: true:
    defmodule SomeLongModuleName.SubModule do
      @doc """
          iex> method(%{property_a: 1, property_b: 2})
          3
      """
      def method(%{property_a: a, property_b: b}) do
        a + b
      end
    end
    
    doctest SomeLongModuleName.SubModule, import: true
    
  • 10-08 00:23