0

我正在测试一个函数以确保它调用另一个命名空间中的函数。我想将函数存根(使用speclj stub),所以我可以记录调用。

(defn fn-under-test []
  (p/helper-fn))

(describe "test"
  (with-stubs)
  (around [it]
    (with-redefs [p/helper-fn (stub :helper)]
      (it)))
  (it "should call the helper-fn"
    (fn-under-test)
    (should-have-invoked :helper {:times 1})))

我得到一个例外:

java.lang.Exception: Stub recoding not bound.  Please add (with-stubs) to the decribe/context.

如果helper-fn在当前命名空间中定义,一切都按预期工作。如何使用 speclj 存根另一个命名空间中的函数?

编辑:当从不同的线程调用存根函数时会发生异常。我创建了一个解决问题的拉取请求

4

1 回答 1

1

我编写了您的示例并且规格运行良好;顺利通过。我想不出在另一个命名空间中存根 fns 不起作用的原因。我一直都这样做。

这是显示我的工作的要点: https ://gist.github.com/slagyr/2aed1ccfd8ec702d7051

于 2014-11-24T03:54:20.887 回答