Sto provando a scrivere i test unitari quando si utilizzano i macro core.async go. Scrivere il test in modo ingenuo, come segue, sembra che il codice all'interno dei blocchi di go non venga eseguito.Come si esegue il test dell'unità clojure.core.async go macro?
(ns app.core-test
(:require [clojure.test :refer :all]
[clojure.core.async :as async]))
(deftest test1 []
(let [chan (async/chan)]
(async/go
(is (= (async/<! chan) "Hello")))
(async/go
(async/>! chan "Hello"))))
Sono riuscito a ottenere il seguente funzionamento, ma è estremamente hacky.
(deftest test1 []
(let [result (async/chan)
chan (async/chan)]
(async/go
(is (= (async/<! chan) "Hello"))
(async/>! result true))
(async/go
(async/>! chan "Hello"))
(async/alts!! [result (async/timeout 10000)])))
Qualche suggerimento su come posso farlo correttamente?
Manca un paren nel secondo blocco di codice. – tar
@tar: Grazie, corretto. –