我有以下课程。在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();
}
}
答案 0 :(得分:0)
如果我理解正确,则您不需要在Mapper中进行另一次模拟,因为您已经在模拟mapper类,并且map方法是无效的,尽管如果方法返回了某些内容,您可以轻松地使用when
来提供行为测试中需要的