Clojure Midje,前提是没有像我预期的那样工作

Clojure Midje,前提是没有像我预期的那样工作,clojure,midje,Clojure,Midje,我编写了以下Midje测试: (fact (followers-minus-friends ...name...) => ["Dude"] (provided (idset show-followers ...name...) => #{1 2 3} (idset show-friends ...name...) => #{1 2} (userinfos #{3}) => [{:screen_na

我编写了以下Midje测试:

(fact (followers-minus-friends ...name...) => ["Dude"]
      (provided (idset show-followers ...name...) => #{1 2 3}
                (idset show-friends ...name...) => #{1 2}
                (userinfos #{3}) => [{:screen_name "Dude"}]))
要测试以下函数(在不同的命名空间中):

这个测试可能看起来很没用,但我只是想试着适应Midje。不知怎的,函数idset刚刚被执行,我想通过在提供的子句中提供返回值来阻止它。对此有什么解释


编辑:我已在此处将项目上载到Github,以防您试图重现上述情况:

问题在于函数
idset
在源命名空间中是私有的。在测试文件中,将其插入测试名称空间。现在有两个不同的变量指向同一个函数:

 #'twitter-utils.core/idset
 #'twitter-utils.test.core/idset
在提供的
,您正在重写第二个变量以指向一个必备函数。但是,函数
followers减去friends
仍然引用第一个变量。该变量未被覆盖,因此您将获得原始函数

围绕
private
声明进行路由的常见习惯用法是使用完整的var名称,如上所述。所以你会希望这一切都能实现:

(fact (followers-minus-friends ...name...) => ["Dude"]
      (provided (#'twitter-utils.core/idset show-followers ...name...) => #{1 2 3}
                (#'twitter-utils.core/idset show-friends ...name...) => #{1 2}
                (userinfos #{3}) => [{:screen_name "Dude"}]))
但事实并非如此。我认为这是Midje的一个错误。至少,我不能马上看出支持它会有什么害处。我要开罚单


目前,您需要将
idset
公开

在不知道被测试函数的细节的情况下,我尝试用复制的方法来复制这个案例,我认为这个函数不是executed@jneira:添加了更多细节。@jneira:项目现在在github启动:我刚刚赶上Clojure和Midje。请您解释一下“…名称…”符号是什么,以及在这种情况下是如何使用的,好吗?谢谢我回答了我自己的问题!
(fact (followers-minus-friends ...name...) => ["Dude"]
      (provided (#'twitter-utils.core/idset show-followers ...name...) => #{1 2 3}
                (#'twitter-utils.core/idset show-friends ...name...) => #{1 2}
                (userinfos #{3}) => [{:screen_name "Dude"}]))