0

语境

  • 我有一个对数据结构进行操作的函数。
  • 我已经为这个函数操作的数据结构编写了一个规范。
  • 此函数返回在浏览器中呈现的试剂组件 (PhantomJS)
  • 规范有一些可选的键,根据传递给函数时数据中是否存在这些键,上述函数的输出(要在浏览器中呈现的组件)会受到影响。
  • 我希望使用clojure.test将传递给生成组件的函数的数据结构的值与从渲染元素中获取的值进行比较,因此简单的单元测试或输入->输出比较不是我要在这里进行的。

问题

由于在规范生成器上调用generateorsample有时会包含或省略可选字段,我想迭代使用sample并测试每个数据结构生成的相当大的数据集,但我不知道“正确”或惯用方法来做到这一点。

我以前用过areclojure.test这很好,但是因为我正在对浏览器中的渲染组件进行测试,并are测试输入-> 输出,所以它似乎不是适合这项工作的工具。

对于此处普遍接受的做法或 language/clojure.test 功能的建议,如果我能以最惯用的方式执行此操作,我们将不胜感激。

4

1 回答 1

1

将传递给生成组件的函数的数据结构的值与从渲染元素中获取的值进行比较

如果可能,我会使用s/fdefwith :args:ret:fnargs 来指定函数的输入和输出之间的关系,然后check是函数。规范指南的测试部分中有一个示例。

迭代使用样本生成的相当大的数据集并测试每个数据结构

这基本上就是check这样做的。

至于 clojure.test 集成,您可以check像这样作为测试套件的一部分:

(deftest foo-test
  (is (not (:check-failed (st/summarize-results (st/check `foo))))))
于 2017-12-11T22:56:52.703 回答