如何针对一系列args测试谓词?

时间:2014-09-11 10:15:18

标签: unit-testing testing clojure

我已经生成了一系列arg列表,例如:

[[a b c] [d e f] [g h i]]

...这样(map (partial apply f) that-seq)应该生成相同结果的列表。我想检查所有这些是否确实产生了相同的结果。通常情况下,你可以使用are宏来做这样的事情,但是我没有一大堆exprs来测试:我有一个seq。所以,我想我想要"相当于" (适用于...)。据我所知,我的选择是:

  • 写一个宏
  • 使用every? true?,放弃有用的错误消息。

有没有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

使用此功能进行更准确的报告

(testing "blake2b defaults are accurate"
  (doseq [args-variation blake2b-empty-args-variations]
    (is (= (seq empty-string-digest)
           (seq (blake2b args-variation)))
        (str "Args variation: " (seq args-variation)))))

答案 1 :(得分:0)

仅供参考,我现在已经离开了:

(testing "blake2b defaults are accurate"
  (let [results (map #(apply blake2b %) blake2b-empty-args-variations)]
    (is (every? (partial array-eq empty-string-digest) results))))