Как я могу проверить фьючерсы в clojure?

Я пытаюсь использовать midje, чтобы проверить будущее, но я не могу заставить его работать.

Код выглядит так

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

С тестом вроде

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

Это не помогает, говоря, что бар никогда не вызывается. Есть ли способ обойти это?

1 ответ

Решение

Этот код показывает, что тест midje ждет до разыменования будущего var, так что я думаю, что midje с фьючерсами - это не ваша проблема, а другие функции последовательности, которые у вас есть

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

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

Удачи!

Другие вопросы по тегам