Clojure 2024 年调查!中分享你的想法。

欢迎!请查阅关于页面以获取更多关于如何使用本网站的详细信息。

0
测试

我的 -main 函数从 *in* 读取参数,如下所示

(defn -main
  [& args]
  (doseq [ln (line-seq (java.io.BufferedReader. *in*))]
  ; Do something...
))

我使用我的应用程序主要如下:$ lein run < input.txt

我想对这个函数进行测试,但我不知道如何编写一个测试用例来模拟 stdin 将数据传递给我的 -main 函数。

谢谢。

2 答案

+1

*in* 是一个动态变量 - 你可以在测试中重新绑定它,使其读取字符串(使用类似 java.io.StringReader 的方法)。

0

使用 with-in-str https://docs.clojure.org/clojure.core/with-in-str

(with-in-str "inputstring"
  (-main))
...