截至Spec 0.2.176,当test.check无法生成合适的值时,它会失败并显示一个相当无用的错误信息,该信息无法指向它尝试生成的对象
ExecutionException: clojure.lang.ExceptionInfo: 无法满足such-that谓词100次后。{:pred #object[clojure.spec.alpha$gensub$fn__1876 0x669d7a6a "clojure.spec.alpha$gensub$fn__1876@669d7a6a"], :gen #clojure.test.check.generators.Generator{:gen #object[clojure.test.check.generators$such_that$fn__1111 0x5fc56c81 "clojure.test.check.generators$such_that$fn__1111@5fc56c81"]}, :max-tries 100}
我相信,如果生成的生成器由_(s/gen ::myspec)_创建,并以某些方式包含::myspec名称,它将打印出类似以下内容会更好
{#clojure.test.check.generators.Generator{
:gen #object[clojure.test.check.generators$such_that$fn__1111 0x5fc56c81 ":my.ns/myspec"]}}
(请注意,已修改生成的生成器的 `.toString` 来打印 spec 名称:“:my.ns/myspec”;尽管“gen for :my.ns/myspec”可能更清晰。)