欢迎!有关如何使用本站的更多信息,请参阅 关于 页面。
我在编写同时面向 Java 和 JavaScript 的库,测试中出现问题。理想情况下,我想写一个符合最低共同标准的测试文件,因为库的 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 ...)