问题标签 [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 回答
826 浏览

clojure - 在 Midje 的事实中如何实现“提供”?

我正在阅读关于 TDD 的 Clojure in Action 第 8 章,并尝试了存根宏。它使用动态绑定机制来存根函数。唉,在 Clojure 1.3 中,不可能对非动态变量使用绑定机制,因此存根宏在大多数情况下不起作用,除非您明确声明指向动态函数的 var。然后我想知道在 Midje 中是如何进行存根的,并试图找到“提供”的来源,但我找不到。所以这里是:

在 Midje 的事实中如何实现“提供”?有人可以详细解释一下吗?

0 投票
1 回答
1027 浏览

clojure - Midje,如果没有按我的预期工作

我编写了以下 Midje 测试:

测试以下函数(在不同的命名空间中):

该测试可能看起来毫无用处,但我只是想习惯 Midje。不知何故,函数 idset 刚刚被执行,我想通过在提供的子句中提供返回值来防止这种情况。对此有何解释?

编辑:我已将项目上传到 Github,以防您想尝试重现上述情况:https ://github.com/Borkdude/twitter-utils

0 投票
2 回答
459 浏览

clojure - travis-ci 上的 Midje 失败,出现 NoSuchMethodError:KeywordLookupSite。

我正在尝试在Travis CI服务上使用 Clojure 的Midje测试框架。

project.clj看起来像这样:

我添加了一个.travis.yml文件:

在本地运行lein midje(Ubuntu 11.10)工作正常,但在 Travis CI 上构建失败,出现以下异常:

为什么错误出现在 Travis CI 上,而不是我的机器上?我能做些什么来解决这个问题?

0 投票
1 回答
552 浏览

unit-testing - 在 midje 中重用设置和拆卸与背景

我有许多 midje 事实,它们的设置/拆卸几乎但不完全相同。

我想将背景包装成可重用的东西,最好是可参数化的,这样我就可以重用它们,但这样做有困难。Midje 告诉我,除上述之外的任何内容都不是预期的背景形式。

0 投票
2 回答
865 浏览

macros - 使用 Clojure + Midje 重新定义宏操作

背景

我是 Clojure 的新手,所以请原谅任何明显的错误。我正在尝试测试一些使用redis-clojure库的 Clojure 数据访问代码。虽然我的集成测试当然会测试整个堆栈,但我不希望我的单元测试依赖于连接到 redis 服务器实例。使用Midje 模拟实际的 Redis 命令似乎相对简单,但是,连接宏更难处理。

需要的建议

通过Midje文档似乎无法做或找不到的是模拟redis 连接或重新定义宏的方式。core.clj中相关的顶级连接宏是:

这里的上下文中的原始代码

我似乎无法在我的测试代码中重新定义宏,并且将宏包装在一个函数中不会让我进一步前进,因为我仍然需要执行主体来产生我的结果。我最想做的是执行传递给连接宏的主体并丢弃宏的其余部分。有任何想法吗?

0 投票
1 回答
237 浏览

unit-testing - midje 事实的设置和拆卸临时目录

这是我想要实现的框架

midje 测试框架允许访问词法范围(向下滚动到最后)。所以这就是我期望的工作:

但是编译器抱怨它无法解析符号temp-dir。知道如何进行这项工作吗?

0 投票
1 回答
764 浏览

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 类似的事情将不胜感激:

相关部分是:

谢谢阅读。

0 投票
1 回答
444 浏览

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 的函数,然后在提供的子句中描述该函数。

0 投票
1 回答
281 浏览

clojure - 如何让 lein midje :autotest 与 immutant 一起使用?

我正在将我在 ring over 中所做的应用程序迁移到 immutant 并且对于如何处理我的所有测试有点迷茫。

因为需要部署不变的项目,所以测试功能的最佳策略是什么?

0 投票
1 回答
498 浏览

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 上询问。我将代码与其他项目(包括在我的计算机上工作的项目)进行了比较,看起来是一样的。

源代码在这里:https ://bitbucket.org/jiriknesl/sprintis