对于循环在 midje 测试中不起作用



在midje中发现了一些奇怪的行为,不确定它是否与midje有关,或者由于我对某些clojure结构的误解,但这令人费解:

在事实陈述中,不会调用 for 循环:

(ns t1
  (:require [midje.sweet :refer :all ] )
  )
(facts
 (println "ok") ; -- this prints fine
 (for [val '(1 2 3)] (println val)) ; this does not
  (fact "junk"
        (> (.length "aaaaha") 3) => true ))

认为它可能与在 ns 中被覆盖有关,但调用 clojure.core/for 的行为类似。

clojure.core/for "...产生一个懒惰的序列..."

您需要了解序列才能看到其副作用。

(doall (for [val '(1 2 3)] (println val)))

我建议使用更合适的东西,比如clojure.core/doseq:

(doseq [val '(1 2 3)] (println val))

最新更新