欢迎!请参阅 关于 页面以了解更多有关此功能的详细信息。
我在编写一个面向 Java 和 JS 的库,发现测试存在问题。理想情况下,我喜欢写一个符合最低限度的测试文件,因为库的 API 和行为设计是不针对特定平台的。
我编写了一些辅助函数和宏来进行测试,但找不到方法使宏解析异步库以进行 cljs 编译。我想到的唯一方法是使用宏两次并使用适当的完全限定函数名,但这非常粗暴,我期望有更好的方法。
来自 clara-rules 项目的技术 https://github.com/cerner/clara-rules/blob/main/src/main/clojure/clara/rules/compiler.clj#L88
(ns my.macro) ;; .clj file (defn compiling-cljs? [] (boolean (when-let [n (find-ns 'cljs.analyzer)] (when-let [v (ns-resolve n '*cljs-file*)] @v)))) (defmacro my-macro [& body] (if (compiling-cljs?) (cljs.async/bla) (clojure.async/bla))) ;; in cljc call: (my-macro ...)