代码之家  ›  专栏  ›  技术社区  ›  OParry

只获取指定函数的测试数据

  •  2
  • OParry  · 技术社区  · 6 年前

    有没有一种方法可以让我只为以前指定的函数生成测试数据 fdef ? 换句话说,我想拥有 check 但是,为了给我生成一些参数集,我没有运行函数,也没有检查输出是否正确。

    :args )一个函数的规格说明,然后这将实现相同的目标,因为我可以然后从它生成一个生成器。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Taylor Wood    6 年前

    fspec 很容易在以后的一代人中得到。

    (defn foo [x] (inc x))
    (s/def ::foo-args (s/cat :x number?))
    (s/fdef foo :args ::foo-args)
    (gen/sample (s/gen ::foo-args))
    => ((2.0) (-1.5) (0) (1) (1.0) (-1) (1.5) (0.5) (-5.0) (-7))
    

    :args 规范,这里有一个笨拙的方法来重现它从 :

    (s/fdef foo :args (s/cat :x number?))
    (def foo-args-spec
      (eval (->> (s/get-spec `foo)
                 (s/form) ;; get original fspec form
                 (rest) ;; discard fspec symbol
                 (apply hash-map) ;; put fspec kwargs into map
                 (:args))))
    (gen/sample (s/gen foo-args-spec))
    => ((0.5) (-3.0) (-1.5) (2) (-1) (-5) (-1.75) (-2) (-13) (2.3828125))
    
    推荐文章