如果你使用一个生成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“核心”中分离出来的可能性,以便它可以分开处理,并且表达了我接管其维护的意愿......我不知道这是否会发生,以及时间表会是怎样的。