如何在clojure中测试期货?

时间:2013-11-22 03:32:49

标签: unit-testing clojure midje

我正在尝试使用midje来测试未来,但我似乎无法让它发挥作用。

代码看起来像

(defn foo []
  (let [f (future (bar))]
    (baz @f))

通过类似

的测试
(fact 
  (foo) => ..a..
  (provided
    (bar) => ..b..
    (baz ..b..) => ..a..))

这失败了,说bar永远不会被调用。有什么方法吗?

1 个答案:

答案 0 :(得分:1)

此代码显示midje测试等到解除引用未来的var,所以我认为带有期货的midje不是你的问题,而是你的序列函数中的其他

(defn foo []
  (let [state (future (Thread/sleep 1000) (println "done") "done")]
      @state
    )

  )
(fact "description of the fact"
      "done" => (foo))
==>true
祝你好运!