2

次のコードをテストするにはどうすればよいですか?

["one", "two", "three"]) |> Enum.each(&IO.puts(&1))
one
two
three
:ok

IO.puts私のテストは現在このようになっていますが、文字列ではなく戻り:ok、おそらく完全な文字列に改行文字が含まれていないため、失敗しています。

assert ["one", "two", "three"]) |> Enum.each(&IO.puts(&1)) == """
one
two
three
"""

おそらくIO.puts、このユースケースでは間違った機能です。もしそうなら、どのような代替手段を使用できますか?

前もって感謝します。

4

1 に答える 1

5

を使用しcapture_ioます。

fun = fn -> ["one", "two", "three"] |> Enum.each(&IO.puts/1) end
assert capture_io(fun) == "one\ntwo\nthree\n"
于 2016-11-01T21:51:06.043 に答える