with-redefs 在 Windows 的特定项目中不起作用
with-redefs does not work in specific project on Windows
我很难使用 with-redefs
在 Clojure 中创建一个简单的单元测试来模拟 Windows。测试代码,我要测试的函数和要mock的函数都不一样namespaces/files:
正在测试的函数:
(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 机器上很好(docker容器或虚拟 Ubuntu),但当 executing/developing 它们在我的 Windows 开发机器上时它只是不起作用:with-redefs
绑定 未应用 并且测试想要实现,例如http 电话,我想嘲笑。如果我 运行 lein test
或尝试通过 Eclipse CCW 从 REPL 执行测试,情况相同。
我知道 with-redefs 有一些奇怪的行为,但由于我的测试在 Linux 上运行良好,我想我错过了一些东西,当 运行 在 Windows 上测试这个项目时.在我的 Windows 机器上编写测试时,我想实现快速反馈循环。
你知道我做错了什么吗?
谢谢,
安德拉斯
由于 -Dclojure.compiler.direct-linking=true jvm-opts 标志,这个问题特定于我正在处理的项目。
关闭直接链接后,我的测试也在我的 Windows 开发机器上运行。我想知道为什么他们传递了 Linux,但也许它没有应用,当 运行 lein test
在那里。
我很难使用 with-redefs
在 Clojure 中创建一个简单的单元测试来模拟 Windows。测试代码,我要测试的函数和要mock的函数都不一样namespaces/files:
正在测试的函数:
(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 机器上很好(docker容器或虚拟 Ubuntu),但当 executing/developing 它们在我的 Windows 开发机器上时它只是不起作用:with-redefs
绑定 未应用 并且测试想要实现,例如http 电话,我想嘲笑。如果我 运行 lein test
或尝试通过 Eclipse CCW 从 REPL 执行测试,情况相同。
我知道 with-redefs 有一些奇怪的行为,但由于我的测试在 Linux 上运行良好,我想我错过了一些东西,当 运行 在 Windows 上测试这个项目时.在我的 Windows 机器上编写测试时,我想实现快速反馈循环。
你知道我做错了什么吗? 谢谢, 安德拉斯
由于 -Dclojure.compiler.direct-linking=true jvm-opts 标志,这个问题特定于我正在处理的项目。
关闭直接链接后,我的测试也在我的 Windows 开发机器上运行。我想知道为什么他们传递了 Linux,但也许它没有应用,当 运行 lein test
在那里。