如何在Clojure Expectations中实现固定装置?

4

最近我开始使用Clojure的测试框架Expectations。作为我的测试的一部分,我有一个数据集,我希望在每个新的测试/expect语句之前将其重置为原始值。

在clojure.test中,我只需创建一个fixture并调用(use-fixtures :each my-fixture-fn)。

我已经搜索了许多关于如何在Expectations中实现在每个测试之前都运行的fixture的好例子,但是没有找到什么好的结果。请问是否有人能够提供一个具体的例子来演示如何在Expectations中实现在每个测试之前都运行的fixture?

1个回答

1

可以在expect语句中使用let语句。也许像这样的伪代码可以为您完成工作(未经测试):

(expect 
 (let [dataset {val: "original values"}]
  (function-to-be-tested val:))
 expected-return-value)

这段真实的代码可以直接运行,展示了原理:

(expect (let [ar [1 2 3]]
   (first ar)) 2)

它按预期返回以下错误信息:
failure in (core_test.clj:9) : image-lib.core-test
(expect (let [ar [1 2 3]] (first ar)) 2)

       expected: 1
            was: 2

Ran 2 tests containing 2 assertions in 17 msecs
1 failures, 0 errors.
Tests completed at 10:59:45.435

谢谢Lain。在查找源代码后,我已经找到了(expect-let)函数,但没有想到使用(let)函数作为夹具。这对我很有帮助! - Jared Holmberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接