我很难在Clojure中使用with-redefs
在Windows上进行模拟来创建简单的单元测试。测试代码,我将要测试的功能和作用被嘲笑都在不同的命名空间/文件:被测with-redefs无法在Windows上的特定项目中工作
功能:
(ns com.mynamespace.a
(:require [com.mynamespace.b :as b]))
(defn afunc [param]
(b/bfunc param))
依赖b命名空间被嘲笑出:
(ns com.mynamespace.b)
(defn bfunc [param]
; External call
)
测试代码
(ns com.mynamespace.a-test
(:require [com.mynamespace.a :as a]
[com.mynamespace.b :as b])
(:use [clojure.test]))
(deftest a-tests
(with-redefs [b/bfunc (constantly "dummy")]
(print (a/afunc "test"))
)
)
我觉得我用with-redefs
正确的,因为我的单元测试运行在Linux精机(搬运工容器或虚拟Ubuntu的),但它只是执行/我的Windows开发机器上开发他们的时候不工作:with-redefs
绑定是不适用和测试想要使真正的例如http调用,我想嘲笑。如果我运行lein test
,或尝试通过Eclipse CCW从REPL执行测试,情况也是如此。
我知道with-redefs有一些奇怪的行为,但是因为我的测试在Linux上运行良好,所以在Windows上运行此项目的测试时,我想我错过了一些东西。在我的Windows机器上编写测试时,我想实现快速反馈循环。
你知道我在做什么错吗? 谢谢, 安德拉什
无法在Windows 7上使用Clojure 1.8.0进行重现。 –