Ich versuche Komponententests zu schreiben, wenn Sie core.async go macros verwenden. Wenn der Test naiv wie folgt geschrieben wird, erscheint der Code in den Go-Blöcken nicht ausgeführt.Wie teste ich Einheit clojure.core.async gehen Makros?
(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"))))
Ich habe es geschafft, das folgende funktioniert, aber es ist extrem 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)])))
Irgendwelche Vorschläge, wie ich das richtig machen kann?
Fehlen eines Parens im zweiten Codeblock. – tar
@tar: Danke, behoben. –