从Spec 0.2.176版开始,当test.check无法生成合适的值时,它将失败并显示一个相当无用的错误信息,该信息并没有指出它试图生成的东西。
ExecutionException: clojure.lang.ExceptionInfo: 在100次尝试后无法满足such-that谓词。{: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`已修改以打印规范名称:":my.ns/myspec";尽管"gen for :my.ns/myspec"可能更清晰。)
(请注意,生成的生成器的`.toString`已修改以打印规范名称:":my.ns/myspec";尽管"gen for :my.ns/myspec"可能更清晰。)
(请注意,生成的生成器的`.toString`已修改以打印规范名称:":my.ns/myspec";尽管"gen for :my.ns/myspec"可能更清晰。)