问题标签 [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.
clojure - 在 Midje 的事实中如何实现“提供”?
我正在阅读关于 TDD 的 Clojure in Action 第 8 章,并尝试了存根宏。它使用动态绑定机制来存根函数。唉,在 Clojure 1.3 中,不可能对非动态变量使用绑定机制,因此存根宏在大多数情况下不起作用,除非您明确声明指向动态函数的 var。然后我想知道在 Midje 中是如何进行存根的,并试图找到“提供”的来源,但我找不到。所以这里是:
在 Midje 的事实中如何实现“提供”?有人可以详细解释一下吗?
clojure - Midje,如果没有按我的预期工作
我编写了以下 Midje 测试:
测试以下函数(在不同的命名空间中):
该测试可能看起来毫无用处,但我只是想习惯 Midje。不知何故,函数 idset 刚刚被执行,我想通过在提供的子句中提供返回值来防止这种情况。对此有何解释?
编辑:我已将项目上传到 Github,以防您想尝试重现上述情况:https ://github.com/Borkdude/twitter-utils
unit-testing - 在 midje 中重用设置和拆卸与背景
我有许多 midje 事实,它们的设置/拆卸几乎但不完全相同。
我想将背景包装成可重用的东西,最好是可参数化的,这样我就可以重用它们,但这样做有困难。Midje 告诉我,除上述之外的任何内容都不是预期的背景形式。
macros - 使用 Clojure + Midje 重新定义宏操作
背景
我是 Clojure 的新手,所以请原谅任何明显的错误。我正在尝试测试一些使用redis-clojure库的 Clojure 数据访问代码。虽然我的集成测试当然会测试整个堆栈,但我不希望我的单元测试依赖于连接到 redis 服务器实例。使用Midje 模拟实际的 Redis 命令似乎相对简单,但是,连接宏更难处理。
需要的建议
通过Midje文档似乎无法做或找不到的是模拟redis 连接或重新定义宏的方式。core.clj中相关的顶级连接宏是:
我似乎无法在我的测试代码中重新定义宏,并且将宏包装在一个函数中不会让我进一步前进,因为我仍然需要执行主体来产生我的结果。我最想做的是执行传递给连接宏的主体并丢弃宏的其余部分。有任何想法吗?
vim - 使用 clojure 和 midje 1.4.0 从单个命名空间运行测试
我想从一个没有 leiningen 的 clojure repl 的命名空间中调用我的midje 1.4.0单元测试。
背景是我想从 vim 中的快捷方式调用它们,而不需要项目中的所有其他测试。我正在使用 vimclojure-static 和前戏。
我怎么能做这样的事情?我已经搜索了midje文档。midje 1.5似乎有一种方法,但它仍然是alpha并且看起来也不是很舒服。
目前我从控制台为所有命名空间运行midje,不太舒服:
对于 clojure.test 我可以使用以下快捷方式,对于 midje 类似的事情将不胜感激:
相关部分是:
谢谢阅读。
clojure - Clojure Midje 在使用“pcalls”时“提供”
我对 Clojure 相当陌生,并且正在尝试并行化对函数的一些调用。
假设我有一张如下地图:
并且我想将键和值用作名为 my-function 的函数的参数,并为每个键/值对调用该函数。我可以使用doseq
如下:
然后我决定我希望对 my-function 的调用是并行的(在我的实际情况下,my-function 将进行彼此独立的休息调用,因此我想并行执行它们)。我想出了以下内容:
这似乎按我的预期工作(如果我错了或者有更好的方法,请纠正我)。我现在遇到的麻烦是让我的 Midje 测试通过。如果我使用doseq
上面的版本,它们会正确通过。在我的测试中,我使用 (provided .... ) 来确保进行正确的调用,并且我希望使用它来检查对 my-function 的调用。是否有可能做到这一点?我发现很难找到有关 pcall 的大量信息。
谢谢
- - - - - 编辑 - - - - -
我设计了一个演示失败的示例。
实现可以在这里找到,测试在这里。我发现单个测试运行良好,但多个测试会导致以下情况:
FAIL at (pcalls_unit.clj:29) 这些调用的次数不正确:(my-func 2 2) [预计至少一次,实际上从未调用过]
FAIL "Test some pcalls 3" at (pcalls_unit.clj:26) 预期:nil 实际:java.util.concurrent.ExecutionException:java.lang.Error:您似乎已经为 pcalls-test.pcalls/my- 创建了先决条件func 会干扰该函数在 Midje 自己的代码中的使用。要解决此问题,请定义一个您自己的使用 my-func 的函数,然后在提供的子句中描述该函数。
clojure - 如何让 lein midje :autotest 与 immutant 一起使用?
我正在将我在 ring over 中所做的应用程序迁移到 immutant 并且对于如何处理我的所有测试有点迷茫。
因为需要部署不变的项目,所以测试功能的最佳策略是什么?
import - 我无法在 clojure/midje 中运行测试
我运行测试:
我得到错误:
线程“主”java.lang.Exception 中的异常:没有命名空间:找到 sprint-is.json-export
文件在:sprint-is/src/sprint_is/json_export.clj
它包含代码:
即使我没有测试文件,它也会引发此错误。当我创建测试文件时,我得到了类似的错误:
没有命名空间:sprint-is.test.json-export 找到
测试在:sprint-is/test/sprint_is/json_export.clj
并包含:
当我尝试从 REPL 导入它时,它也找不到命名空间。我试图重命名文件,移动文件,重命名目录,删除 ns(它编译但它不起作用),在 Clojure IRC 上询问。我将代码与其他项目(包括在我的计算机上工作的项目)进行了比较,看起来是一样的。