Как симулировать пользовательский ввод? - PullRequest
0 голосов
/ 18 октября 2018

Я знаю, что можно смоделировать пользовательский ввод, обернув функцию (read-line) в with-in-str, а затем передавая ваш ввод программно следующим образом:

(with-in-str "punit naik" (println (read-line)))

Это, конечно, выведет punit naik вконсоль.Но проблема в том, что у меня есть функция, которая запускается рекурсивно и постоянно запрашивает ввод данных пользователем в своих итерациях.И я хочу написать контрольный пример для этой функции.Как мне этого добиться?

1 Ответ

0 голосов
/ 18 октября 2018

read-line читает по одной строке за раз.Вы можете подготовить строку, которая содержит все строки, которые должны быть прочитаны, разделены новой строкой:

(with-in-str
  "a\nb\nc"
  (loop []
    (if-let [line (read-line)]
      (do
        (println "Line was" line)
        (println "Recurring")
        (recur))
      (println "No more lines"))))

Это печатает:

Line was a
Recurring
Line was b
Recurring
Line was c
Recurring
No more lines
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...