unit-testing - 如何对懒惰进行单元测试

标签 unit-testing clojure lazy-sequences

我有一个函数,该函数应该采用惰性序列,并返回未实现的惰性序列。现在,我想编写一个单元测试(在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/

相关文章:

http - 使用 Clojure 发出 HTTP 请求

f# - 为什么 Seq.init 比带有 'for' 的序列表达式慢?

python - mock.side_effect 中的临时 "unpatching"功能

unit-testing - angular 2 rc7 - 测试服务 - 错误 : No provider for String

c++ - 重载函数不明确

list - 将列表映射转换为映射列表(即行到列)

java - 无法为 Junit 的方法创建模拟调用

Clojure ring wrap-json-params 弄乱了 JSON 数组

swift - 如何创建惰性组合

clojure - 如何提高 Clojure 中的文本处理性能?