场景:单元测试mock对象,执行时为null或值不符。
单元测试中mock方法并doReturn了mock数据,但是实际的方法在后面使用的参数却是null。
断点调试后发现调用方法前和在方法中的对象的id并非一个;
重复浏览调用代码,发现问题在于单测中重复mock一个方法,doReturn的mock数据被覆盖了
问题原因:
doReturn(selectEntity).when(selectMapper).selectById(any());
首先确定doReturn的对象是否给属性赋值
尽量用anyLong()等指定类型(方法入参类型相同)
前两步都不生效的话就使用 isNull()
doReturn(selectEntity).when(selectMapper).selectById(isNull());
建议使用Power Mockito
import static org.powermock.api.mockito.PowerMockito.*;