跳至主要內容

单元测试

程序员李某某大约 1 分钟

单元测试

Mock

package com.jd.overseas.edm.web;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jd.overseas.edm.common.constants.ResultJson;
import com.jd.overseas.edm.common.constants.ResultPageJson;
import com.jd.overseas.edm.common.utils.DateUtil;
import com.jd.overseas.edm.dao.*;
import com.jd.overseas.edm.model.*;
import com.jd.overseas.edm.service.*;
import com.jd.overseas.edm.service.impl.MarketingCampaignServiceImpl;
import com.jd.overseas.edm.vo.CampaignListVo;
import com.jd.overseas.edm.web.controller.MarketingCampaignController;
import com.jd.security.tde.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.boot.test.context.SpringBootTest;

import javax.servlet.http.HttpServletRequest;
import java.util.*;

//@SpringBootTest(classes = EdmWebApplication.class)
@RunWith(MockitoJUnitRunner.class)
@Slf4j
public class MarketingCampaignTest extends BaseTest {

    private MarketingCampaignServiceImpl marketingCampaignService;

    private MarketingCampaignController marketingCampaignController;

    @Mock
    private MarketingCampaignDao marketingCampaignDao;

    @Mock
    private EdmApiUserDao edmApiUserDao;

    @Mock
    private EdmUserInfoDao edmUserInfoDao;

    @Mock
    private ContactPersonDao contactPersonDao;

    @Mock
    private TemplateEmailDao templateEmailDao;

    @Mock
    private SendCloudAdaptorService sendCloudAdaptorService;

    @Mock
    private EdmDomainInfoDao edmDomainInfoDao;

    @Mock
    private CrowdDao crowdDao;

    @Mock
    private HttpServletRequest request;

    @Before
    public void setup() {
        this.marketingCampaignService = new MarketingCampaignServiceImpl();
        marketingCampaignService.setCrowdDao(crowdDao);
        marketingCampaignService.setContactPersonDao(contactPersonDao);
        marketingCampaignService.setEdmDomainInfoDao(edmDomainInfoDao);
        marketingCampaignService.setSendCloudAdaptorService(sendCloudAdaptorService);
        marketingCampaignService.setTemplateEmailDao(templateEmailDao);
        marketingCampaignService.setEdmUserInfoDao(edmUserInfoDao);
        marketingCampaignService.setMarketingCampaignDao(marketingCampaignDao);
        marketingCampaignService.setEdmApiUserDao(edmApiUserDao);

        this.marketingCampaignController = new MarketingCampaignController();
        marketingCampaignController.setMarketingCampaignService(marketingCampaignService);
        marketingCampaignController.setTestPin("testPin123");
        marketingCampaignController.setSkipLogin(true);
    }

    @Test
    public void addCampaign() {
        // 入参
        MarketingCampaign campaign = new MarketingCampaign();
        campaign.setCampaignName("zhenyuetest");
        campaign.setCampaignType(0);
        campaign.setCampaignStatus(2);
        campaign.setApiKey("xxxx111");
        campaign.setApiUser("djdjdj");
        campaign.setCrowdId(1L);
        campaign.setEmailId(1L);
        campaign.setEmailSubject("sss");
        campaign.setEmailSummary("sss");
        campaign.setFromAddress("xxx@example.com");
        campaign.setFromDomain("example.com");
        campaign.setFromName("test");
        campaign.setJdUserPin("jdjd");
        campaign.setLabelId(125L);
        campaign.setLabelName("dsdf");
        campaign.setSendTime(new Date());
        campaign.setCreateTime(new Date());
        campaign.setUpdateTime(new Date());

        // Mock 返回值

        Mockito.when(edmUserInfoDao.selectOne(new LambdaQueryWrapper<EdmUserInfo>()
                .eq(campaign.getJdUserPin() != null, EdmUserInfo::getJdUserPin, campaign.getJdUserPin())
                .eq(EdmUserInfo::getDelFlag, 0)))
                .thenReturn(EdmUserInfo.builder().userEmailCount(1000).build());

        Mockito.when(marketingCampaignDao.selectCount(new LambdaQueryWrapper<MarketingCampaign>()
                .eq(campaign.getJdUserPin() != null, MarketingCampaign::getJdUserPin, campaign.getJdUserPin())
                .eq(MarketingCampaign::getDelFlag, 0)))
                .thenReturn(11L);

        Mockito.when(edmDomainInfoDao.selectCount(new LambdaQueryWrapper<EdmDomainInfo>()
                .eq(EdmDomainInfo::getJdUserPin, campaign.getJdUserPin())
                .eq(EdmDomainInfo::getDomainName, campaign.getFromDomain())
                .eq(EdmDomainInfo::getSpfStatus, 1)
                .eq(EdmDomainInfo::getDkimStatus, 1)
                .eq(EdmDomainInfo::getMxStatus, 1)
                .eq(EdmDomainInfo::getDelFlag, 0)))
                .thenReturn(11L);

        Mockito.when(templateEmailDao.selectOne(new LambdaQueryWrapper<TemplateEmail>()
                .eq(campaign.getEmailId() != null, TemplateEmail::getSsEmailId, campaign.getEmailId())
                .eq(TemplateEmail::getDelFlag, 0)))
                .thenReturn(new TemplateEmail());

        Mockito.when(contactPersonDao.selectCount(new LambdaQueryWrapper<ContactPerson>()
                .eq(campaign.getCrowdId() != null, ContactPerson::getCrowdId, campaign.getCrowdId())
                .eq(ContactPerson::getDelFlag, 0)))
                .thenReturn(1L);

        EdmApiUser apiUser = EdmApiUser.builder().apiUser("apiUser").apiKey("apiUser").build();
        Mockito.when(edmApiUserDao.selectOne(new LambdaQueryWrapper<EdmApiUser>()
                .eq(EdmApiUser::getDomainName, campaign.getFromDomain())
                .eq(EdmApiUser::getDelFlag, 0)))
                .thenReturn(apiUser);

        ResultJson<JSONObject> resultJson = new ResultJson<>();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("labelId", 11);
        jsonObject.put("labelName", "labelName");
        resultJson.setData(jsonObject);
        Mockito.when(sendCloudAdaptorService.addLabel(apiUser.getApiUser(), apiUser.getApiKey(), UUID.randomUUID().toString()))
                .thenReturn(resultJson);

        // 调用
        marketingCampaignService.addCampaign(campaign);
        marketingCampaignController.addCampaign(campaign.getCampaignName(),
                campaign.getEmailSubject(),
                campaign.getEmailSummary(),
                campaign.getFromDomain(),
                campaign.getFromAddress(),
                campaign.getFromName(),
                campaign.getCrowdId(),
                campaign.getEmailId().toString(),
                campaign.getCampaignType(),
                DateUtil.format(DateUtil.FORMAT_MIN, campaign.getSendTime()));
    }

}

上次编辑于:
贡献者: ext.liyuanhao3