问题标签 [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.
unit-testing - Midje 在 Clojure 中的宏上失败
这是代码的传递版本:
正常功能:通过
这是它的宏版本:
这里失败的是输出:
这与我刚刚将defn更改为defmacro的代码相同。
我不明白为什么这不起作用?
unit-testing - 测试 chan 处理函数时结果不一致
process-async
在框架内测试的功能midje
会产生不一致的结果。大多数情况下,它会按预期进行检查,但有时会out.json
以初始状态 ( ""
) 读取。在检查之前,我依靠async-blocker
等待的功能process-async
。
我的方法有什么问题?
clojure - 使用 midge 进行 clojure 测试
我的函数接受一个 map 参数,我从中获取存款值。目前,我能够测试诸如存款值是否为空或存款值是否大于某个值等场景。我的 API 跟踪用户进行存款的次数,并使用原子跟踪此情况以及何时用户存款超过 4 次,他/她应该收到一定的错误信息。如何使用 midje 测试这个场景?
以下是我的示例测试用例:
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
错了吗?
clojure - 如何在clojure中测试密钥是否为UUID
我正在尝试检查关键字是否是 UUID。它应该看起来像这样(这不起作用):
还有什么其他方法可以测试它?
使用 Midje 1.9。
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 模拟这些函数?
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"]
,但没有成功!
unit-testing - 人们测试他们的 clojure.spec 规范是否常见?
我正在一个人学习 Clojure,我一直在做一个简单的玩具项目来创建一个 Kakebo(日本预算工具)供我学习。首先我将使用 CLI,然后是 API。
由于我刚刚开始,我已经能够“了解”规范,这似乎是 clojure 中用于验证的一个很好的工具。所以,我的问题是:
- 人们测试自己的书面规范?
- 我像下面的代码一样测试了我的。建议让这个更好?
据我了解,有一些方法可以通过生成测试自动测试功能,但是对于基本规范,这种测试是一种好习惯吗?
规格文件:
测试文件:
作为最后一个问题,如果我尝试以下导入,为什么我无法访问规范:
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 错误,但我们的测试目前都没有失败。
这是测试/单元测试路径的错误输出