【问题标题】:Testing recursive IO prompt in Elixir/Erlang在 Elixir/Erlang 中测试递归 IO 提示
【发布时间】:2017-02-17 02:58:19
【问题描述】:

我有一个函数confirm,它读取IO输入,根据输入,如果它是y(是)或n(否),它返回true/false,否则它再次调用confirm , 直到输入任何预期的 yn

@spec confirm(binary) :: boolean
def confirm(question) do
  answer = question |> IO.gets() |> String.trim() |> String.downcase()

  case(answer) do
    "y" -> true
    "n" -> false
    _ -> confirm(question)
  end
end

要测试yn 案例很容易:

assert capture_io([input: "y"], fn -> confirm("Question") end) == "Question"

但我不知道如何多次捕获 IO 以测试递归情况,假设第一次输入是“无效”然后是“y”。 elixir 有没有办法测试这样的 IO 功能?或者你有什么建议我可以重写函数来更容易地测试它吗?

原问题https://elixirforum.com/t/testing-recursive-io-prompt/3715

感谢您的帮助。

【问题讨论】:

标签: recursion io erlang elixir ex-unit


【解决方案1】:

未经测试,但是只使用换行符呢?

assert capture_io([input: "foo\nbar\ny"], fn -> confirm("Question") end) == "Question"

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2017-08-07
    • 2015-12-11
    • 1970-01-01
    • 2020-05-25
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多