【问题标题】:Test sequence of sample data generated from clojure.spec从 clojure.spec 生成的样本数据的测试序列
【发布时间】:2017-12-11 22:23:26
【问题描述】:

上下文

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

问题

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

我之前在clojure.test 中使用过are,这很好,但是因为我正在对浏览器中的渲染组件进行测试,并且are 测试输入-> 输出,所以它看起来不正确工作的工具。

非常感谢您就此处普遍接受的做法或 language/clojure.test 功能提出建议,让我以最惯用的方式执行此操作。

【问题讨论】:

    标签: clojure clojurescript reagent clojure.spec clojure.test


    【解决方案1】:

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

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

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

    这基本上就是check 所做的。

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

    (deftest foo-test
      (is (not (:check-failed (st/summarize-results (st/check `foo))))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多