我完全可以为此编写一个捕获 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
最佳答案
您可以使用与正常测试中使用的相同的函数:ExUnit.CaptureIO.capture_io
。尽管当您向函数添加更多功能时,这可能不是适合文档测试的函数。
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
关于unit-testing - 有没有办法使用 Elixir 中的 Doctest 测试 IO 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46698441/