当前位置:  开发笔记 > 编程语言 > 正文

test.check:'properties/for-all'中的let-style行为

如何解决《test.check:'properties/for-all'中的let-style行为》经验,为你挑选了1个好方法。

关于这个问题,以及那里引用的博客文章,有没有理由prop/for-all不直接推出这种功能?例如:

(require '[clojure.test.check.generators :as gen])
(require '[clojure.test.check.properties :as prop])
(require '[clojure.test.check.clojure-test :refer :all])

(defspec some-props-test
  (prop/for-all [n (gen/choose 1 10)
                 v (gen/vector gen/int n) ;; treat n like its produced value
                 e (gen/element v)]
    ... do stuff with n, v & e ...
  ))

基本上,我想重新使用产生的值通过在另一发电机一个发电机,然后引用二者实际测试码内产生的值.这实际上将糖/魔法扩展for-all为允许引用由宏提供的let-like块内的生成值,因为它在下面的表达式块中起作用.

如果我遗漏了其他可能使其成为可能的内容,或者由于某种原因而无法实施,请告诉我.



1> gfredericks..:

我同意这个功能可能比for-all目前的功能更有用.它没有被改变的主要原因是向后兼容性(尽管使用旧样式的代码不会破坏,它不会像过去那样收缩).

但是你有更多选择,而不仅仅是monad:

gen/let,它使用let-style绑定(它不是替代品,for-all但你可以一起使用)

com.gfredericks.test.chuck.generators/for在test.chuck帮助程序库中定义- 它就像一个发烧友版本gen/let

com.gfredericks.test.chuck.properties/for-all,在同一个图书馆,这一个替代品for-all

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有