1

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

代码看起来像

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

像这样的测试

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

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

4

1 回答 1

2

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

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

  )
(fact "description of the fact"
      "done" => (foo))
==>true

祝你好运!

于 2013-11-22T10:28:38.243 回答