1.@Mock和@InjectMock
在同一个类A中的Aa方法和Ab两个方法,且两个方法相互调用,例如:
Class A(){
public void Aa(){
Ab();//同一个类的方法
B.b1();//跨类调用
}
}
Class B(){}
在写Aa的单元测试的时候,使用了@InjectMock方法,以便可以执行Aa里的逻辑,但是对Ab方法用When().thenReturn()返回并不生效,执行会进入Bb方法内部,所以对Ab也需要构建完整报文,以便将Ab方法完全执行。
跨类调用的方法使用@Mock when().thenReturn()成功。
2.对于使用Wrapper.lambdaUpdate()方法时,使用when().thenReturn(),找不到Entity的某个值。会报错:MybatisPlusException: can not find lambda cache for this property [****]
解决方法:需要在@Before里增加配置
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), Xxx.class);