如果您使用一个生成 false
的变量或表达式,这会使这里发生的事情更加明显
user=> (def v false)
#'user/v
user=> (t/deftest foo (t/is v))
#'user/foo
user=> (foo)
FAIL in (foo) (NO_SOURCE_FILE:4)
expected: v
actual: false
nil
user=>
expected:
行本质上是对 "我期望这个表达式产生真值" 的缩写,所以在这种情况下,它说的是 "我期望 false
产生真值"(但实际上是 false
)。
clojure.test 可以产生更好的输出——Jay Fields 的 Expectations 库和 Paul Stadig 在 clojure.test 扩展库 Humane Test Output 中的大部分原始工作都是为了在断言失败时产生更好的错误信息。
当我将 Expectations 中的 clojure.test
兼容性工作抽离出来并转变为独立的库 https://github.com/clojure-expectations/clojure-test 时,失去了一个非常有价值的东西,那就是 Expectations 生成的漂亮失败消息。因为我从 Expectations 的报告引擎切换到了 clojure.test
的报告引擎。我和 Alex Miller 讨论了将来在某个时候将 clojure.test
从 Clojure 的“核心”中分离出来以单独工作的可能性,并表达了对接管其维护工作的兴趣……我不知道这会不会发生,时间表是什么。