Spring Boot 单元测试覆盖 Mybatis-Plus Lambda 链式调用

Mybatis-Plus 单元测试 Spring Boot About 2,146 words

LambdaQuery

业务代码

@Service
public class MyService {

    @Resource
    MyLambdaService myLambdaService;
    
    public void doQuery() {
        myLambdaService.lambdaQuery()
            .ge(xxx)
            .and(xxx)
            .last(xxx)
            .list()
            .forEach(entity -> {
                // xxx
            })
    }
}

单元测试

class MyUnitTest {

    @InjectMocks
    MyService myService;

    @BeforeEach
    void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    void testMyMethod() {
        LambdaQueryChainWrapper<MyEntity> mock = mock(LambdaQueryChainWrapper.class);
        when(myService.lambdaQuery()).thenReturn(mock);

        LambdaQueryChainWrapper<MyEntity> ge = mock(LambdaQueryChainWrapper.class);
        when(mock.ge(any(), any())).thenReturn(ge);

        LambdaQueryChainWrapper<MyEntity> and = mock(LambdaQueryChainWrapper.class);
        when(ge.and(any())).thenReturn(and);

        LambdaQueryChainWrapper<MyEntity> last = mock(LambdaQueryChainWrapper.class);
        when(and.last(any())).thenReturn(last);

        MyEntity e1 = new MyEntity();
        when(last.list()).thenReturn(List.of(e1));

        myService.doQuery();
        verify(xxx);
    }

}

LambdaUpdate

业务代码

@Service
public class MyService {

    @Resource
    MyLambdaService myLambdaService;
    
    public void doUpdate() {
        myLambdaService.lambdaUpdate()
            .set(xxx)
            .set(xxx)
            .eq(xxx)
            .update();
    }
}

单元测试

class MyUnitTest {

    @InjectMocks
    MyService myService;

    @BeforeEach
    void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    void testMyMethod() {
        LambdaUpdateChainWrapper<MyEntity> mock = mock(LambdaUpdateChainWrapper.class);
        when(measurementService.lambdaUpdate()).thenReturn(mock);
        when(measurementService.lambdaUpdate().set(any(), any())).thenReturn(mock);
        when(measurementService.lambdaUpdate().eq(any(), any())).thenReturn(mock);
        when(measurementService.lambdaUpdate().update()).thenReturn(true);

        myService.doUpdate();
        verify(xxx);
    }

}
Views: 46 · Posted: 2025-02-28

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh