2
からIOをキャプチャ:ExUnit.CaptureIO
docsでテストは、私は次のような方法での戻り値とIO出力をテストしたい子プロセス
defmodule Speaker do
def speak do
receive do
{ :say, msg } ->
IO.puts(msg)
speak
_other ->
speak # throw away the message
end
end
end
、これを行う例のテストがあり、次のように見えました
::私は、私は同様のアクションを実行しますがspawn
エド・プロセスでは、次のテストを書くと考えていた、ということを考えると
test "checking the return value and the IO output" do
fun = fn ->
assert Enum.each(["some", "example"], &(IO.puts &1)) == :ok
end
assert capture_io(fun) == "some\nexample\n"
end
私はspawn
EDプロセスをテストに関して、おそらく何かが足りないのです、だから、
1) test .speak with capture io (SpeakerTest)
test/speaker_test.exs:25
Assertion with == failed
code: capture_io(fun) == "Hello\n"
lhs: ""
rhs: "Hello\n"
stacktrace:
test/speaker_test.exs:30: (test)
:
はしかし、私は何も出力はありませんでした次のエラーメッセージが、私は端末に出力を見ることができるにもかかわらず、私に言ってもらいますまたはreceive
マクロを使用する方法テストを通過させるためにテストを変更するにはどうすればよいですか?
TILについて['Process.group_leader/2'](http://elixir-lang.org/docs/stable/elixir/Process.html#group_leader/2)、テストに合格したことを確認できますそれらの+1。他の誰かが回避策を講じていないかどうかを確認するために少し質問を残しておきます。ありがとう! –