gpt4 book ai didi

recursion - 在 Elixir/Erlang 中测试递归 IO 提示

转载 作者:行者123 更新时间:2023-12-03 02:42:37 25 4
gpt4 key购买 nike

我有一个函数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 情况很简单:

断言 capture_io([输入: "y"], fn -> 确认("问题") end) == "问题"

但我不知道如何多次捕获 IO 来测试递归情况,假设第一次输入是“无效”,然后是“y”。 Elixir 有没有办法测试这样的 IO 功能?或者也许您对我如何重写函数以更轻松地测试它有一些建议?

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

感谢您的帮助。

最佳答案

未经测试,但是只使用换行符怎么样?

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

关于recursion - 在 Elixir/Erlang 中测试递归 IO 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com