如何在clojure期望中实现fixture?

Posted

技术标签:

【中文标题】如何在clojure期望中实现fixture?【英文标题】:How to implement fixtures in clojure expectations? 【发布时间】:2015-11-03 16:17:47 【问题描述】:

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

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

我已经搜索了如何在预期中做到这一点的好例子,但还没有任何运气。谁能提供一个具体的例子来说明如何实现一个在每次测试之前运行的fixture?

【问题讨论】:

【参考方案1】:

可以将 let 语句与 expect 一起使用。也许这样的事情会为你做这项工作(未经测试的伪代码):

(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

【讨论】:

谢谢莱恩。我在源代码中四处挖掘后找到了 (expect-let ) fn,但没有想到像夹具一样使用 (let) fn。这很有帮助!

以上是关于如何在clojure期望中实现fixture?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 clojure.test 将值从夹具传递到测试?

在clojure返回错误中实现范围函数

如何在python中实现适用于N维特征向量的GMM聚类EM算法(期望最大化算法)

pytest学习和使用9-fixture中conftest.py如何使用?

如何在MQ中实现支持任意延迟的消息?

在 Clojure 中,如何配置 Korma 和 Ragtime 以使用相同的数据库?