编程语言
首页 > 编程语言> > java – Mockito spy返回与实际方法调用不同的结果

java – Mockito spy返回与实际方法调用不同的结果

作者:互联网

我有以下代码:

public Object parse(){
      ....
      VTDGen vg = new VTDGen();
      boolean parsed = vg.parseFile(myFile.getAbsolutePath(), false);
}

我正在为这种方法编写单元测试.当我在没有模拟VTDGen的情况下运行该方法时,parseFile方法返回true.但是,当我用间谍模拟它时,它返回false.

我的测试如下:

@Before
public void setup(){
     VTDGen vtgGen = new VTDGen();
     VTDGen vtgGenSpy = PowerMockito.spy(vtdGen);
     PowerMockito.whenNew(VTDGen.class).withNoArguments().thenReturn(vtdGenSpy);

}


@Test
public void myTest(){
    // when I run the test parseFile returns false
    // if I remove the mocking in the setup, parseFile returns true
}

我的印象是,Mockito的间谍对象不应该改变被包裹物体的行为,所以为什么我会变得虚假而不是真实?

解决方法:

也许是因为你正在返回vtdGenMock而不是vtgGenSpy

PowerMockito.whenNew(VTDGen.class).withNoArguments()thenReturn(vtdGenMock).

标签:java,mockito,powermock,vtd-xml
来源: https://codeday.me/bug/20190630/1336518.html