繁体   English   中英

我们可以使用Mockito模拟一个间谍对象吗?

[英]Can we mock a spy object using mockito?

我有一个名为RadiationControl的类,并通过以下方式为其创建了一个间谍。

RadiationControl radCtrl = new RadiationControl();
RadiationControl spyRadCtrl = Mockito.spy(radCtrl);

我在另一个名为StationMonitor的类中有一个链接的方法调用,该类通过使用RadiationControl对象进行调用。 当我尝试使用上面创建的间谍并尝试访问具有方法参数的参数时,它们会不时变化。

StationMonitorObject stationMonitorObject = radCtrl.getStationMonitorLoader().retrieveCVStationMonitorObject(Long.parseLong(syngId), status);

因此,使用上述语法,当我尝试对该方法调用的间谍进行存根时,它抱怨存根已正确。

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

  Mockito.doReturn(stationMonitorObject).when(stationMonitorLoader).retrieveCVStationMonitorObject(any(Long.class), null);

有没有更好的方法来解决这种情况?

有没有更好的方法来解决这种情况?

是。

这里的问题是:

 radCtrl.getStationMonitorLoader() .retrieveCVStationMonitorObject(Long.parseLong(syngId), status); 

这违反了得墨meter耳法律 (也不要和陌生人说话! )。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM