如何在Java中的另一个模拟对象的模拟中注入模拟对象?

时间:2019-11-25 19:15:21

标签: java mockito

我有以下课程。在ProductImpl和Mapper中都使用DataServices对象。但是它的模拟在ProductImpl中可用,但在Mapper类中不可用。我不需要做什么,以便在Mapper类中也可以使用模拟的DataServices。

class ProductImpl{
    @Inject private DataServices ds;
    @Inject private Mapper mapper;

    public void call(){
      ds.get(); //ds is not null here
      mapper.map();
     // some code
    }
   }



abstact class Mapper{

        @Inject private DataServices ds;

        public void map(){
            ds.get()// ds is null here
            //some code
        }
    }

我下面有测试课

class Test{

    @Mock private DataServices ds;
    @Mock private Mapper mapper;
    @InjectMocks private ProductImpl impl;

    @Before
    public void setUp(){
    MockitoAnnotations.initMocks(this)
    }

    @Test
    public void test(){
       impl.call();
    }
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,则您不需要在Mapper中进行另一次模拟,因为您已经在模拟mapper类,并且map方法是无效的,尽管如果方法返回了某些内容,您可以轻松地使用when来提供行为测试中需要的