Elixir:隐秘的文档测试

Elixir: doctesting a sigil

我写了一个很棒的印记:

defmodule Sigiltest do

  @doc """
  An awesome sigil!

  ### Usage

      iex> ~a{I love elixir}
      "I love elixir, awesome!"
  """
  def sigil_a(content, _flags) do
    "#{content}, awesome!"
  end
end

这是测试模块:

defmodule SigiltestTest do
  use ExUnit.Case
  doctest Sigiltest
end

当我 运行 mix test 我得到以下输出:

Compiled lib/sigiltest.ex
** (CompileError) (for doctest at) lib/sigiltest.ex:7: undefined function sigil_a/2
    (stdlib) lists.erl:1337: :lists.foreach/2
    (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6

有没有办法 运行 在印记上进行 doctests? 如果可以,怎么做?

那是因为 sigil_a 不存在于文档测试 运行 的上下文中。您可以显式导入 Sigiltest

@doc """
An awesome sigil!

### Usage

    iex> import Sigiltest
    iex> ~a{I love elixir}
    "I love elixir, awesome!"
"""

或将 import: true 添加到 doctest 调用:

doctest Sigiltest, import: true