药剂:doctesting一个印记

问题描述:

我写的真棒印记:药剂:doctesting一个印记

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 

有没有办法在sigil上运行doctests? 如果是这样,怎么样?

这是因为sigil_a不存在于doctests正在运行的上下文中。您可以导入Sigiltest明确:

@doc """ 
An awesome sigil! 

### Usage 

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

或添加import: truedoctest调用:

doctest Sigiltest, import: true