java日常.md

发布时间 2023-08-08 09:20:10作者: nsfoxer

Java Spring

Spring 中进行Junit测试时,PageHelper未被消耗

如果mapper被mock掉,会导致Mapper之前的PageHelper的线程存储未被消耗。导致后续出现错误。

// 源码
// .....
void q() {
    PageHelper.startPage(1, 1);
	someMapper.query();
}

// .....    

// 问题单测
@Mock
private SomeMapper someMapper;
@Test
void testQ() {
    q(); // 错误 由于mapper被mock掉,PageHelper又被正常调用,此处会导致PageHelper留存在线程里的数据未被消耗
}

// 正确单测
@Mock
private SomeMapper someMapper;
@Test
void testQ() {
    q(); 
    PageHelper.clearPage(); // 手动消耗掉即可
}