ClojureScript测试

由于Cider不支持ClojureScript的测试,在写ClojureScript的时候没法使用cider-test在emacs里测试。好在figwheel提供比较全面的测试支持。

本文使用了practicalli的Spacemacs及Clojure配置,安装与配置方法可参考:Spacemacs, Cider 及 Reveal

创建ClojureScript项目

使用下面的命令创建ClojureScript项目:

clojure -M:project/new figwheel-main myproject.entry -- --reagent

其中的myproject.entry是项目名,项目入口路径为src/cljstest/entry.cljs

使用命令行运行测试

在项目根目录执行:

clojure -M:fig:test

运行测试时,不能使用开发模式的REPL,否则会报端口冲突错误。

如果不想打开浏览器,可修改test.cljs.edn,取消launch-js的注释并修改浏览器的路径,例如

:launch-js ["google-chrome-stable" "--headless" "--disable-gpu" "--repl" :open-url]

在开发时自动测试

从命令行虽然能完成测试,但在开发阶段,希望边写代码边测试时,还是很不方便。Figwheel的自动测试就显得很有用了。修改dev.cljs.edn,配置watch-dirsauto-testing选项:

^{:watch-dirs ["test" "src"]
  :css-dirs ["resources/public/css"]
  :auto-testing true}
{:main cljstest.entry}

在Emacs里使用cider-jack-in-cljs启动REPL后,就可以在http://localhost:9500/figwheel-extra-main/auto-testing页面查看自动测试结果。修改代码后,figwheel会自动测试并更新结果。