Я пытаюсь написать модульные тесты при использовании макросов core.async go. Написание теста наивно, как показано ниже, показывает, что код внутри блоков go не выполняется.
(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"))))
Мне удалось получить следующие рабочие, но это очень хаки.
(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)])))
Любые предложения, как я могу это сделать правильно?