@Override
    public PageResult<ArticleDO> getArticlePage(ArticlePageReqVO pageReqVO) {
        return articleMapper.selectPage(pageReqVO);
    }
@Test
    @Disabled  // TODO 请修改 null 为需要的值，然后删除 @Disabled 注解
    public void testGetArticlePage() {
        // mock 数据
        ArticleDO dbArticle = randomPojo(ArticleDO.class, o -> { // 等会查询到
            o.setCategoryId(null);
            o.setTitle(null);
            o.setAuthor(null);
            o.setPicUrl(null);
            o.setIntroduction(null);
            o.setBrowseCount(null);
            o.setSort(null);
            o.setStatus(null);
            o.setSpuId(null);
            o.setRecommendHot(null);
            o.setRecommendBanner(null);
            o.setContent(null);
            o.setCreateTime(null);
        });
        articleMapper.insert(dbArticle);
        // 测试 categoryId 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setCategoryId(null)));
        // 测试 title 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setTitle(null)));
        // 测试 author 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setAuthor(null)));
        // 测试 picUrl 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setPicUrl(null)));
        // 测试 introduction 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setIntroduction(null)));
        // 测试 browseCount 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setBrowseCount(null)));
        // 测试 sort 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setSort(null)));
        // 测试 status 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setStatus(null)));
        // 测试 spuId 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setSpuId(null)));
        // 测试 recommendHot 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setRecommendHot(null)));
        // 测试 recommendBanner 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setRecommendBanner(null)));
        // 测试 content 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setContent(null)));
        // 测试 createTime 不匹配
        articleMapper.insert(cloneIgnoreId(dbArticle, o -> o.setCreateTime(null)));
        // 准备参数
        ArticlePageReqVO reqVO = new ArticlePageReqVO();
        reqVO.setCategoryId(null);
        reqVO.setTitle(null);
        reqVO.setAuthor(null);
        reqVO.setStatus(null);
        reqVO.setSpuId(null);
        reqVO.setRecommendHot(null);
        reqVO.setRecommendBanner(null);
        reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));

        // 调用
        PageResult<ArticleDO> pageResult = articleService.getArticlePage(reqVO);
        // 断言
        assertEquals(1, pageResult.getTotal());
        assertEquals(1, pageResult.getList().size());
        assertPojoEquals(dbArticle, pageResult.getList().get(0));
    }