mockito 验证方法内部调用 [英] mockito verify method call inside method
本文介绍了mockito 验证方法内部调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于单元测试,我试图验证是否存在一种使用 mockito verify 验证方法内部方法调用的方法?
for a unit tests i am trying to verify if there is a way to verify a method call inside a method with mockito verify?
一个例子是:
public delete(param) {
VideoService.deleteVideo(param); << i want to verify the call of this method
return etc..
}
我可以检查删除是否被调用:
I can check if delete is called with :
verify(mock,times(1)).delete(param);
是否也有一种方法可以检查内部方法,例如:verify(mock,times(1)).delete(param).VideoService.deleteVideo(param);
Is there also like a way to check the inside method like: verify(mock,times(1)).delete(param).VideoService.deleteVideo(param);
推荐答案
你可以使用间谍.
public class MyVideoService {
private VideoService videoService;
public MyVideoService(VideoService videoService) {
this.videoService = videoService;
}
public void delete(String param) {
videoService.deleteVideo(param);
}
}
public class VideoService {
public void deleteVideo(String param) {
}
}
如果您现在想要测试使用 MyVideoService
的对象.例如
If you now want to test an object that uses MyVideoService
. E.g.
public class ObjectThatUsesMyVideoService {
private MyVideoService myVideoService;
ObjectThatUsesMyVideoService(MyVideoService myVideoService) {
this.myVideoService = myVideoService;
}
public void deleteVideo(String param) {
myVideoService.delete(param);
}
}
你可以写一个这样的测试
You can write a test like this
public class MyVideoServiceTest {
@Test
public void delete(){
// VideoService is just a mock
VideoService videoServiceMock = Mockito.mock(VideoService.class);
// Creating the real MyVideoService
MyVideoService myVideoService = new MyVideoService(videoServiceMock);
// Creating a spy proxy
MyVideoService myVideoServiceSpy = Mockito.spy(myVideoService);
ObjectThatUsesMyVideoService underTest = new ObjectThatUsesMyVideoService(myVideoServiceSpy);
underTest .deleteVideo("SomeValue");
// Verify that myVideoService was invoked
Mockito.verify(myVideoServiceSpy, Mockito.times(1)).delete("SomeValue");
// Verify that myVideoService invoked the VideoService
Mockito.verify(videoServiceMock, Mockito.times(1)).deleteVideo("SomeValue");
}
}
这篇关于mockito 验证方法内部调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文