java - 模拟似乎在进入 lambda 方法时失去了存根
问题描述
我正在尝试测试在我们的一种方法内部运行的一些逻辑(这不是最好的事情,但我的手臂被迫直到可以重构此代码)但是方法的存根列表似乎在特定点丢失了.
processNotification()
我的测试方法调用MessageConversionClass
.
这MessageConversionClass
包含一个@Autowired
shareClassIdentifierRepostitory
(原文如此)字段。
在进入processNotification()
时,我的模拟存根在类级别上是可见的:
但是,有一点在processNotification()
它通过 aMap<String, Consumer<Change>> repDrvrChangesMapping
的Map.ofEntries
地方,其中一个条目是以下entry( RedexDefinitions.TRFSRD_ISIN_CD, change -> updateIdentifier(change, "ISIN") )
。
在此updateIdentifier()
方法内部,shareClassIdentifier.findByTypeAndValue
调用了但返回 null,因为shareClassIdentifierRepostitory
堆栈上的 现已丢失其存根:
值得注意的一件事是,在条目 lambda 中change
传递给的类型是我服务中的内部类,但我不确定这是否重要。updateIdentifier()
Change
MessageConversionClass
有谁知道为什么updateIdentifier()
从这个 lambda 方法内部调用会导致shareClassIdentifierRepostitory
模拟丢失它的存根?
编辑:
所以我做了更多的挖掘工作,似乎有两个 shareClassIdentifierRepostitory 实例,一个有 4 个存根,一个有 0。它们在测试方法甚至访问服务类之前都可用。
现在的问题是为什么有两个shareClassIdentifierRepostitory
模拟实例被初始化,为什么它会改变?
解决方案
推荐阅读
- javascript - Html Youtube频道计数器中的多个请求JQuery
- c++11 - 当一个类被另一个类和 getter 引用时,计数器如何工作
- go - 返回多个错误或相应处理它们的惯用方式
- matlab - linux上的matlab mex链接
- ios - RubyMotion 找不到模拟器设备手表应用程序
- matlab - 如何将图像中的边缘与Matlab中的缺失像素连接起来?
- python - 可以同时导出数据吗?
- pytorch - Pytorch 卷积自动编码器
- javascript - 同一个按钮如何在每次点击时播放不同的视频?
- php - 使用 PHP curl 下载 github repo 时遇到问题