【问题标题】:JUnit AfterClass equivalent in Midje Clojure?Midje Clojure 中的 JUnit AfterClass 等价物?
【发布时间】:2016-11-12 18:58:53
【问题描述】:

我找不到任何在所有事实之后运行的 Midje 函数。

代码如下:

(background
  (before :contents (println "Before All Facts"))
  (after :contents (println "After All Facts"))
  (before :facts (println "Before Each Fact"))
  (after :facts (println "After Each Fact")))

实际输出为:

Before All Facts
After All Facts
Before Each Fact
After Each Fact

预期输出为:

Before All Facts
Before Each Fact
After Each Fact
After All Facts

【问题讨论】:

  • 这里是 github 问题:github.com/marick/Midje/issues/374
  • 这似乎不是一个问题,而是一个错误——作者认为显然无法修复,至少根据您的 github 问题。
  • 这是一个已弃用的功能中的错误,background。该功能已替换为with-state-changes 和namespace-state-changes,它们确实支持您想要的功能。

标签: unit-testing clojure lisp clojurescript midje


【解决方案1】:

您可以将所有事实包装在 with-state-changes 中以实现此目的,但请注意 Clojure 对顶级表单的最大大小有限制。为避免该问题,您可以使用namespace-state-changes 在整个文件的开头和结尾执行设置和拆卸。

【讨论】:

  • 我需要 AfterClass 而不是 After :) 我猜 Midje 不支持这个。
  • 您可以通过这种方式在所有事实之后运行代码,从而在您的问题中生成输出。实际命名空间执行完毕后,将无法中断执行。为什么需要这样做?
  • 那些链接有很好的例子,我不确定我是否可以添加很多。您还可以调查远离 midje 并使用带有 :once 标志的 clojure.test 固定装置
  • 基本上你只需要用with-state-changes 替换background 并将所有之前/之后的形式放在一个向量中
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 2011-06-20
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 2014-07-26
相关资源
最近更新 更多