2017-10-11 87 views
1

我完全可以寫一個「正常」測試,爲此捕獲IO有沒有辦法在Elixir中使用Doctest測試IO輸出?

只想知道是否可以使用Doctest

一個例子是:

defmodule CLI do 

    @doc """ 
    Politely says Hello. 

    ## Examples 

     iex> CLI.main([]) 
     "Hello dear person." # this would be the expected IO output 
    """ 
    def main(args) do 
    IO.puts "Hello dear person." 
    end 
end 

defmodule CLITest do 
    use ExUnit.Case 
    doctest CLI 
end 

回答

3

您可以使用相同的功能,你會在一個正常的測試使用:ExUnit.CaptureIO.capture_io。儘管在函數中添加更多功能時,這可能不是一個適用於doctests的函數。

defmodule CLI do 
    @doc """ 
    Politely says Hello. 

    ## Examples 

     iex> import ExUnit.CaptureIO 
     iex> capture_io(fn -> CLI.main([]) end) 
     "Hello dear person.\\n" 
    """ 
    def main(args) do 
    IO.puts "Hello dear person." 
    end 
end 
$ mix test 
. 

Finished in 0.03 seconds 
1 test, 0 failures 
+0

呀,理解。 是的,對於這個特定的事情,我認爲最好只是去「實際」測試。但是這澄清了一堆。 謝謝@Dogbert。 =)。 –

相關問題