我有以下代码:间谍的Mockito返回不同的结果比实际的方法调用
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的间谍对象不应该改变包装对象的行为,那么为什么我会收到错误,而不是真实的?
我需要更多的帮助你,无论是在你的MYTEST()方法,或在您的parse()方法也许VTDGen.parseFile()。您正在创建一个间谍,但我没有看到验证码。 myFile从哪里来?我可能不需要所有这些信息,但比迄今为止所提供的更多。 – jhericks
对不起,延迟回复。周末的东西。 'myTest'调用'parse'并且'myFile'被传入。关键是如果我注释掉'PowerMockito.whenNew','vg.parseFile'返回'true',但是'whenNew'就位(所以间谍被使用)'vg.parseFile'返回'false'。我认为间谍应该只是打电话给实际的实例,为什么返回的值不同? –
所以你现在没有对你的间谍做任何实际的“间谍”?你怎么知道'vg.parseFile'返回的是什么? – jhericks