我有一个函数,该函数应该采用惰性序列,并返回未实现的惰性序列。现在,我想编写一个单元测试(在test-btw中),以确保结果是未实现的惰性序列。
最佳答案
user=> (instance? clojure.lang.LazySeq (map + [1 2 3 4] [1 2 3 4]))
true
如果您有很多要测试的东西,也许可以简化它:
(defmacro is-lazy? [x] `(is (instance? clojure.lang.LazySeq ~x)))
user=> (is-lazy? 1)
FAIL in clojure.lang.PersistentList$EmptyList@1 (NO_SOURCE_FILE:7)
expected: (clojure.core/instance? clojure.lang.LazySeq 1)
actual: (not (clojure.core/instance? clojure.lang.LazySeq 1))
false
user=> (is-lazy? (map + [1 2 3 4] [1 2 3 4]))
true
从Clojure 1.3开始,还有
realized?
函数:“如果为promise,delay,future或lazy序列生成了值,则返回true。”
关于unit-testing - 如何对懒惰进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651927/