Java Mockito/PowerMocktio doNothing for none void方法

Java Mockito/PowerMocktio doNothing for none void方法,java,unit-testing,junit,mockito,powermock,Java,Unit Testing,Junit,Mockito,Powermock,我需要一个方法,当在测试期间调用时,该方法返回一些不做任何事情的内容,拥有该方法的类实例被实现为间谍 我知道doNothing()方法只适用于void方法。有没有一种方法可以通过返回某些内容的方法获得相同的行为 谢谢大家! 使用when(spy.myMethod())。然后返回(null)。这将防止间谍调用包装的实例。您必须告诉Mockito对于返回某些内容的方法要返回什么。mock的默认行为是返回null。间谍的默认行为是调用包装对象。当您在spy中调用stub方法时,它会阻止对包装对象的调用

我需要一个方法,当在测试期间调用时,该方法返回一些不做任何事情的内容,拥有该方法的类实例被实现为间谍

我知道doNothing()方法只适用于void方法。有没有一种方法可以通过返回某些内容的方法获得相同的行为

谢谢大家!

使用
when(spy.myMethod())。然后返回(null)
。这将防止间谍调用包装的实例。您必须告诉Mockito对于返回某些内容的方法要返回什么。
mock
的默认行为是返回
null
间谍的默认行为是调用包装对象。当您在
spy
中调用
stub
方法时,它会阻止对包装对象的调用,并执行指定的行为


根据的文档,您还可以执行
doReturn(null).when(spy).myMethod()

是的,这很有效!难以置信这是多么简单:)请注意
when(spy.myMethod()).thenReturn(null)
对spy不起作用(在一般情况下,它可能在特定情况下),因为该方法的实际实现将在此时执行。一般规则是,间谍必须始终使用
doXyz().when(spy).method()
语法来阻止实际代码的意外执行。