2017-10-11 9 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。関数に関数を追加すると、これはdoctestに適した関数ではないかもしれません。

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に感謝します。 =)。 –

関連する問題