【发布时间】:2015-12-06 11:10:44
【问题描述】:
对于 Cljs 和 Om,我仍处于学习阶段。我正在研究编写组件测试。一些组件对我创建的 API 进行了cljs-http 调用。在测试时,我不希望这些 API 调用实际发送请求,所以我正在研究模拟请求并返回一个夹具。这是我的一个示例组件:
(defn async-component [data owner]
(reify
IWillMount
(will-mount [_]
(let [resp (go ((<! (async-call "/") :body))]
(om/update! data [:objects] resp)))
IRender
(render [_]
[:ul
(om/build-all item-component data)])))
(defn async-call [path]
(http/get path {:keywordize-keys true}))
请不要介意代码在语法上是否真的正确,我只是展示它的要点。
我现在要做的是测试这个 async-component 和 API 调用,看看它是否会呈现我用来模拟请求的夹具。这是怎么做到的?我知道cljs.test 有async 块来测试异步代码,但所有示例都显示它测试只有go 的实际代码块,而不是在更大的上下文中。
【问题讨论】:
标签: unit-testing clojure clojurescript om