如果你使用一个产生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:
行本质上是对"I expected this expression to yield truthy"的缩写,所以在你这个例子中,它是在说"我期望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的报表生成器切换到clojure.test
的报表生成器而产生的真正出色的失败消息。我和Alex Miller讨论了将clojure.test
在未来某个时间点从Clojure "核心"中分离开来以便单独工作的可能性,我表达了对承担其维护工作的兴趣……我不知道这会发生还是时间表会是什么。