[英]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.