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
我写了一个很棒的印记:
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