单元测试 – 如何对懒惰进行单元测试

我有一个函数,应该采取一个懒惰的seq并返回一个未实现的懒惰seq.现在我想编写一个单元测试(在test-is 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还有实现的? function:“如果为promise,delay,future或lazy序列生成了一个值,则返回true.”

转载注明原文:单元测试 – 如何对懒惰进行单元测试 - 代码日志