请在 2024 年 Clojure 调查问卷! 中分享您的看法。

欢迎!请查看 关于 页面以获取有关此页面如何工作的更多信息。

0
测试

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

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

我的应用程序基本上是通过这种方式使用的: $ lein run < input.txt

我想测试这个函数,但不知道如何编写模拟输入数据传递给我的 -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))
...