Как я могу проверить фьючерсы в 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
Удачи!