- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是代码的通过版本:
正常功能:通过
(defn my-fn
[]
(throw (IllegalStateException.)))
(fact
(my-fn) => (throws IllegalStateException))
这是它的宏版本:
(defmacro my-fn
[]
(throw (IllegalStateException.)))
(fact
(my-fn) => (throws IllegalStateException))
这里失败的输出是:
LOAD FAILURE for example.dsl.is-test
java.lang.IllegalStateException, compiling:(example/dsl/is_test.clj:14:3)
The exception has been stored in #'*me, so `(pst *me)` will show the stack trace.
FAILURE: 1 check failed. (But 12 succeeded.)
这是相同的代码,我只是将 defn 更改为 defmacro。
我不明白为什么这不起作用?
最佳答案
问题是你的宏是错误的。当您的函数在运行时抛出错误时,宏会在编译时抛出错误。以下内容应修复该行为:
(defmacro my-fn
[]
`(throw (IllegalStateException.)))
现在您的宏调用将被抛出的异常所取代。类似的东西:
(fact
(throw (IllegalStateException.)) => (throws IllegalStateException))
关于unit-testing - Midje 在 Clojure 中使用宏失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40664590/
我正在尝试使用 midje 框架在 leiningen 的 compojure 模板 (lein new compojure financeiro) 中运行测试并收到警告: lein midje WA
我正在尝试使用 midje 框架在 leiningen 的 compojure 模板 (lein new compojure financeiro) 中运行测试并收到警告: lein midje WA
我想写一个函数来提取一些常见的事实,就像这样 (defn check-odd-and-positive [n] (fact (str n " not odd") n => odd?) (f
假设我有一个函数 (defn extenal_api_fn [stuff] ... do things.... ) (defn register_user [stuff] (external
我运行测试: lein midje :autotest 我得到错误: 线程“main”java.lang.Exception 中的异常:没有命名空间:sprint-is.json-export fou
我正在阅读《Clojure in Action》第 8 章有关 TDD 的内容,并尝试了 stub 宏。它使用动态绑定(bind)机制来 stub 函数。唉,在 Clojure 1.3 中,不可能对非
背景 我是 Clojure 的新手,所以请原谅任何明显的错误。我正在尝试测试一些使用 redis-clojure 的 Clojure 数据访问代码图书馆。当然,虽然我的集成测试会测试整个堆栈,但我不希
我正在使用Timbre作为一个日志库,但我在使用 Midje 测试它时遇到问题。我有以下方法,我要做的就是断言 Will be print 已打印。 (defn init [level] (t
如果我有一个使用 Midje 测试框架编写的 Clojure 测试套件,我该如何跳过个别测试?例如,如果我在 Java 中使用 JUnit 并且我希望跳过单个测试,我会在该测试方法上方添加一个 @Ig
我有许多 midje facts 的设置/拆卸几乎完全相同,但不完全相同。 (against-background [(before :contents (setup!)) (before :cont
我有一个使用 Midje 库进行测试的 Leiningen 项目。但是我无法运行任何测试,以防 lein test 我得到 java.io.FileNotFoundException: Could n
这是代码的通过版本: 正常功能:通过 (defn my-fn [] (throw (IllegalStateException.))) (fact (my-fn) => (throws I
情况是这样的:我正在尝试对调用函数 B 的函数 A 进行单元测试。函数 B 在弹弓 try+ 块中调用,在某些情况下,它可以使用弹弓 throw+ 抛出。我想在 midje 测试中模拟函数 B,以便它
我正在尝试使用 ring-mock 编写一个 midje 测试来发布到 liberator 端点。我可以成功地为获取请求编写测试,但我似乎无法将数据传递给帖子,我只能返回格式错误的响应。这是我拥有的代
当我使用外部 let 子句构建一些定义和调用进行测试时, stub 无法按我预期的方式工作。例如: 这个测试失败了 (fact "blah" (let [x (meth1 123)] x
我正在尝试安装 Pulsar。我有lein版本 idf@idf-Satellite-C55t-A ~/Documents/clojure/pulsar $ lein version Leiningen
我找不到任何在所有事实之后运行的 Midje 函数。 代码如下: (background (before :contents (println "Before All Facts")) (af
我正在尝试使用 Midje Travis CI 上的 Clojure 测试框架服务。 project.clj 如下所示: (defproject my-project "0.1.0-SNAPSHOT"
我是一名优秀的程序员,十分优秀!