Java 我们可以用mockito模拟间谍对象吗?

Java 我们可以用mockito模拟间谍对象吗?,java,mockito,junit4,Java,Mockito,Junit4,我有一个叫做RadiationControl的类,我用下面的方法为它创建了一个间谍 RadiationControl radCtrl = new RadiationControl(); RadiationControl spyRadCtrl = Mockito.spy(radCtrl); 我在另一个名为StationMonitor的类中有一个链式方法调用,该类使用RadiationControl对象进行调用。当我尝试使用上面创建的spy并尝试访问具有方法参数的内容时,它们会随着时间的推移而变化

我有一个叫做RadiationControl的类,我用下面的方法为它创建了一个间谍

RadiationControl radCtrl = new RadiationControl();
RadiationControl spyRadCtrl = Mockito.spy(radCtrl);
我在另一个名为StationMonitor的类中有一个链式方法调用,该类使用RadiationControl对象进行调用。当我尝试使用上面创建的spy并尝试访问具有方法参数的内容时,它们会随着时间的推移而变化

StationMonitorObject stationMonitorObject = radCtrl.getStationMonitorLoader().retrieveCVStationMonitorObject(Long.parseLong(syngId), status);
因此,使用上述语法,当我尝试为该方法调用stub spy时,它会抱怨stub是否正确

StationMonitorLoader stationMonitorLoader = StationMonitorLoader.getLoader(domain);
  Mockito.doReturn(stationMonitorLoader).when(spyRadCtrl).getStationMonitorLoader();

  Mockito.doReturn(stationMonitorObject).when(stationMonitorLoader).retrieveCVStationMonitorObject(any(Long.class), null);
有没有更好的方法来应对这种情况

有没有更好的方法来应对这种情况

这里的问题是:

这违反了德米特的法律(也就是不要和陌生人说话!)

方法
retrieveCVStationMonitorObject()
应该在类
RadiationControl
中可用,并将调用委托给它的依赖项(看起来像是
StationMonitorLoader

有没有更好的方法来应对这种情况

这里的问题是:

这违反了德米特的法律(也就是不要和陌生人说话!)

方法
retrieveCVStationMonitorObject()
应该在类
RadiationControl
中可用,并将调用委托给它的依赖项(看起来像是一个
StationMonitorLoader

什么是“它在抱怨存根正确”呢?您是否收到某种错误消息?在运行时还是编译时?另外,什么是
stationMonitorLoader
?又是一个间谍还是嘲笑?什么叫“它在抱怨”呢?您是否收到某种错误消息?在运行时还是编译时?另外,什么是
stationMonitorLoader
?另一个间谍还是嘲笑?
radCtrl.getStationMonitorLoader()
       .retrieveCVStationMonitorObject(Long.parseLong(syngId), status);