Как я могу проверить многострочный вывод в 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"
Другие вопросы по тегам