gpt4 book ai didi

unit-testing - with-redefs 在 Windows 上的特定项目中不起作用

转载 作者:行者123 更新时间:2023-12-04 04:08:05 26 4
gpt4 key购买 nike

我很难在 Clojure 中使用 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 机器(docker 容器或虚拟 Ubuntu)上运行良好,但它只是在以下情况下不起作用在我的 Windows 开发机器上执行/开发它们:with-redefs 绑定(bind)未应用并且测试想要实现,例如http 电话,我想 mock 。如果我运行 lein test,或者尝试通过 Eclipse CCW 从 REPL 执行测试,情况也是一样的。

我知道 with-redefs 有一些奇怪的行为,但由于我的测试在 Linux 上运行良好,我想我在 Windows 上运行该项目的测试时错过了一些东西。在我的 Windows 机器上编写测试时,我想实现快速反馈循环。

你知道我做错了什么吗?谢谢,安德拉斯

最佳答案

由于 -Dclojure.compiler.direct-linking=true jvm-opts 标志,这个问题特定于我正在处理的项目。

关闭直接链接后,我的测试也可以在我的 Windows 开发机器上运行。我想知道为什么他们在 Linux 上通过了,但也许在运行 lein test 时没有应用。

关于unit-testing - with-redefs 在 Windows 上的特定项目中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46093502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com