Как я могу проверить многострочный вывод в Elixir?
Как я могу проверить следующий код?
["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
неправильная функция для этого варианта использования. Если да, то какую альтернативу я могу использовать?
Заранее спасибо.
1 ответ
Решение
Использование capture_io
,
fun = fn -> ["one", "two", "three"] |> Enum.each(&IO.puts/1) end
assert capture_io(fun) == "one\ntwo\nthree\n"