问题标签 [midje]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
70 浏览

unit-testing - Midje 在 Clojure 中的宏上失败

这是代码的传递版本

正常功能:通过

这是它的宏版本:

这里失败的是输出:

这与我刚刚将defn更改为defmacro的代码相同。

我不明白为什么这不起作用?

0 投票
1 回答
67 浏览

unit-testing - 测试 chan 处理函数时结果不一致

process-async在框架内测试的功能midje会产生不一致的结果。大多数情况下,它会按预期进行检查,但有时会out.json以初始状态 ( "") 读取。在检查之前,我依靠async-blocker等待的功能process-async

我的方法有什么问题?

0 投票
1 回答
179 浏览

clojure - 使用 midge 进行 clojure 测试

我的函数接受一个 map 参数,我从中获取存款值。目前,我能够测试诸如存款值是否为空或存款值是否大于某个值等场景。我的 API 跟踪用户进行存款的次数,并使用原子跟踪此情况以及何时用户存款超过 4 次,他/她应该收到一定的错误信息。如何使用 midje 测试这个场景?

以下是我的示例测试用例:

0 投票
1 回答
195 浏览

clojure - 如何在 Midje 中定义先决功能?

我应该首先说我是 Clojure 的新手,一般来说是 FP。我一直在阅读有关如何在 Midje 中定义先决条件的文档,但我无法理解其中的一些内容。

我的理解是,要进行自上而下的 TDD,您应该首先在您的测试模块中编写一个测试,并unfinished在顶部有一条语句“声明”您尚未定义的所有先决条件函数。然后,您可以在测试中的函数中摆弄那些必备函数provided(描述它们的返回值等)。

我的困惑在于您应该如何让您的实际源模块识别先决条件功能。这是一个非常简单且人为的示例,我将用它来说明我的意思:

run_game然后为了使测试正确失败,我只是在我的模块中编写了一个函数的存根。

到目前为止,一切都很好。我运行测试,但它们失败了,因为:
a)do-turns没有被调用
b)start-game没有返回任何东西。

因此,现在通过更改start-game为 call 和 return使测试通过(do-turns)。作为记录,do-turns我将从一个尚不存在的模块中获得一个假设的先决条件函数——据我所知,这就是自顶向下 TDD 的工作方式。

现在,可以理解的是,我遇到了一个巨大的错误;Clojure 无法解析符号do-turns。所以我想,也许如果我(declare do-turns)在顶部,我可以防止它爆炸。不,我得到一个不同的错误,因为我试图调用一个未绑定的函数。

我尝试了其他几种让 Clojure 识别的方法,do-turns但似乎该unfinished声明给它带来了问题。我只是用unfinished错了吗?

0 投票
2 回答
631 浏览

clojure - 如何在clojure中测试密钥是否为UUID

我正在尝试检查关键字是否是 UUID。它应该看起来像这样(这不起作用):

还有什么其他方法可以测试它?

使用 Midje 1.9。

0 投票
0 回答
138 浏览

clojure - 无法使用 Midje 模拟 HugSQL 生成的数据库函数

我在使用 Conman 帮助程序库模拟从 HugSQL 模板生成的数据库访问函数时遇到问题。这些函数在运行时定义如下:

(conman/bind-connection *db* file)

就我而言,我正在对该服务功能进行单元测试:

其中db/create-user!函数由Conman生成。但是,当尝试使用此 Midje 测试模拟该功能时,我收到以下错误消息:

我从服务和测试中完全相似地引用了动态创建和模拟的函数,但是 midje 不认为它是同一个函数。我还尝试通过 var ( #'musician.user.db/create-user!) 引用该函数,并使用服务和测试的完整路径musician.user.db/create-user!,但这些都不起作用。从 REST API 和 REPL 测试时,服务代码确实有效,但我无法设置此测试。

似乎问题在于 midje 无法模拟该函数,因为它在运行时之前是未知的。这仅仅是正确引用函数的问题,还是无法用 Midje 模拟这些函数?

0 投票
1 回答
799 浏览

clojure - 热修复“警告:任何?已经引用:#'clojure.core/any?在命名空间:leiningen.midje,被替换为:#'leiningen.midje/any?”

我正在尝试lein new compojure financeiro使用 midje 框架在 leiningen 的 compojure 模板 () 中运行测试并收到警告:

我的测试代码handler_test.clj

我的项目文件project.clj

clojure.test当我使用( )运行默认测试时lein test,我没有收到警告,但是当我使用midje.sweet( lein midje) 运行时,我收到有关“命名空间:leiningen.midje”“替换 #'clojure.core/any? 到 #'leiningen.midje/any?' ,我在网上寻找解决方案,但我没有找到这个特定的警告(leiningen/compojure/midje),我是 clojure 和 midje 的初学者。我现在正在学习。我可以在哪个文件中替换这个命名空间?有简单的解决方案可以消除此警告吗?或者这是框架 midje 中的一个错误?

这不会干扰测试的执行,但是每次运行测试时都看到这条消息很烦人。

注意:我也尝试过之前版本的 midje [midje "1.9.6"],但没有成功!

0 投票
1 回答
101 浏览

unit-testing - 人们测试他们的 clojure.spec 规范是否常见?

我正在一个人学习 Clojure,我一直在做一个简单的玩具项目来创建一个 Kakebo(日本预算工具)供我学习。首先我将使用 CLI,然后是 API。

由于我刚刚开始,我已经能够“了解”规范,这似乎是 clojure 中用于验证的一个很好的工具。所以,我的问题是:

  1. 人们测试自己的书面规范?
  2. 我像下面的代码一样测试了我的。建议让这个更好?

据我了解,有一些方法可以通过生成测试自动测试功能,但是对于基本规范,这种测试是一种好习惯吗?

规格文件:

测试文件:

作为最后一个问题,如果我尝试以下导入,为什么我无法访问规范:

0 投票
1 回答
44 浏览

clojure - Kaocha-midje 设置

我们为 Clojure 设置了大量的 midje 测试,它们目前与 lein midje 一起使用。

我们想使用 Kaocha-midje,然后使用 Kaocha 的其余部分,但无法使用 Kaocha.type/midje 找到任何测试。

这是 project.clj 加载项:

还有test.edn文件

example_midje_test.clj 是来自https://github.com/lambdaisland/kaocha-midje/blob/master/test/midjetest/the_test.clj的示例

但是我也尝试了我们现有的测试之一,并且还尝试了 test/unit 以便它可以找到它们,但它给出了 Spec 错误,但我们的测试目前都没有失败。

这是测试/单元测试路径的错误输出