public class TargetObjectWrapper extends TargetObject {
   @Mock SomeObject myMockOfSomeObject;
   @InjectMocks TargetObject targetObject;

   public TargetObjectWrapper(){
       this.targetObject = mock(originalObject);

       //doAnswer(...).when(...) methods
   }

   //Override other methods of TargetObject
 }


我正在尝试将特定的模拟对象注入targetObject的一个字段中。我知道targetObject将始终具有带有此特定签名的字段。

所有这些都可以,我可以成功注入myMockOfSomeObject,并适当地重定向调用。

但是,当TargetObject类包含其他字段(如下面的简单示例)时,该字段将被清空,并在我将请求传递给原始对象时导致空指针异常。

Log log = LogFactory.getLog(getClass());

如何避免导致其他对象获取空值?特别是如果其他变量可能因对象而异(此代码应该是通用的)?

最佳答案

在这种情况下,看来spy(..)而不是mock(...)是正确的方法。尽管我尚未测试它是否注入了我的模拟对象,但我相信它确实可以。

09-06 04:20