This code shows that midje test wait until the dereferencing future var, so i think midje with futures is not your problem but other in the sequence functions you have
(defn foo []
(let [state (future (Thread/sleep 1000) (println "done") "done")]
@state
)
)
(fact "description of the fact"
"done" => (foo))
==>true
Good luck!