提供断言上下文额外的信息是一个常见需求。例如,可能需要将局部或动态绑定的值包含在断言报告中,或者在测试环境之外使用 clojure.spec/assert
来利用具有 {{specs}} 的结构化错误。
使用 {{clojure.core/assert}} 可以将额外数据拼接到格式化消息中,但 {{clojure.spec/assert}} 没有这样的功能。Clojure 的 {{assert}} 中增加了 {{message}} 参数,CLJ-774 中提到该机制不理想。将报告作为数据传递的一个显著好处是,编辑器可以方便地处理大数据。
该提案与 CLJ-415 有关,但范围更广。通过一个额外的映射,可以传递任何值(而不仅仅是局部值),而且不会意外地使 REPL 填满大量局部值。