Clojure midje不支持hashmaps提供的存根函数

Clojure midje不支持hashmaps提供的存根函数,clojure,stub,midje,Clojure,Stub,Midje,考虑以下代码 (use 'midje.sweet)

考虑以下代码

(use 'midje.sweet)                                                                                                                                                                                                                                                              
(defn x2 [x] (* x x))                                                                                                                                                                                                                                                           
(def fs {:x2 x2})                                                                                                                                                                                                                                                               
(fact                                                                                                                                                                                                                                                                           
  (x2 1) => "one"                                                                                                                                                                                                                                                               
  ((:x2 fs) 1) => "one"                                                                                                                                                                                                                                                         
  (against-background                                                                                                                                                                                                                                                           
    (#'tweetfetcher.core-test/x2 1) => "one"))    
哪个输出

FAIL at (core_test.clj:177)
    Expected: "one"
      Actual: 1
FAILURE: 1 check failed.  (But 32 succeeded.)
第一个检查是存根的,而第二个使用hashmap
fs
提供的
x2

考虑到我排除了引用,为什么
(:x2 fs)
没有存根


感谢您的见解。

我对它的这种工作方式并不感到惊讶。在
(x2 1)
中,已知编译时
x2
是定义为
(defn x2[x](*x))
的函数

(:x2 fs)1)
中,我们知道在编译时,
fs
{:x2 x2}
,但我们还不知道
(:x2 fs)
的结果。我的意思是,表达式
(:x2 fs)
事实
展开期间不进行求值。它可能会看到
(:x2 fs)
不是解析为函数的变量,因此不会将它与存根关联(在后台
中)