0


mock数据,不使用springboot的单元测试

业务代码

  1. package com.haier.configure.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.haier.common.util.RequestUtil;
  5. import com.haier.configure.entity.LanguageTableDO;
  6. import com.haier.configure.mapper.LanguageTableMapper;
  7. import com.haier.configure.service.LanguageTableService;
  8. import com.haier.configure.util.CheckDataUtil;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.springframework.stereotype.Service;
  11. import java.util.List;
  12. /**
  13. * @author A2001111
  14. * @date 2024/4/3010:24
  15. */
  16. @Slf4j
  17. @Service
  18. public class LanguageTableServiceImpl extends ServiceImpl<LanguageTableMapper, LanguageTableDO> implements LanguageTableService {
  19. @Override
  20. public void test1() {
  21. System.out.println("业务1...");
  22. String appId = RequestUtil.getAppId();
  23. System.out.println("appid:"+appId);
  24. System.out.println("第一次调用-----");
  25. List<LanguageTableDO> list = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));
  26. for (LanguageTableDO languageTableDO : list) {
  27. System.out.println("循环结果1:"+languageTableDO.getChineseName());
  28. }
  29. System.out.println("第二次调用-----");
  30. List<LanguageTableDO> list2 = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));
  31. for (LanguageTableDO languageTableDO : list2) {
  32. System.out.println("循环结果2:"+languageTableDO.getChineseName());
  33. }
  34. System.out.println("第3次调用-----");
  35. List<LanguageTableDO> list3 = this.list(Wrappers.lambdaQuery(LanguageTableDO.class).eq(LanguageTableDO::getId, 1));
  36. for (LanguageTableDO languageTableDO : list3) {
  37. System.out.println("循环结果3:"+languageTableDO.getChineseName());
  38. }
  39. System.out.println("业务2...");
  40. }
  41. }

需要mock静态方法RequestUtil.getAppId(),需要mock成员方法this.list(lambdaQuery);

  1. /**
  2. * @author A2001111
  3. * @date 2024/9/30 9:07
  4. */
  5. package com.haier.configure.service.impl;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.haier.common.util.RequestUtil;
  8. import com.haier.configure.entity.LanguageTableDO;
  9. import com.haier.configure.mapper.LanguageTableMapper;
  10. import org.junit.jupiter.api.AfterEach;
  11. import org.junit.jupiter.api.BeforeEach;
  12. import org.junit.jupiter.api.Test;
  13. import org.mockito.*;
  14. import org.mockito.junit.jupiter.MockitoSettings;
  15. import org.mockito.quality.Strictness;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import static org.mockito.Mockito.any;
  19. import static org.mockito.Mockito.when;
  20. @MockitoSettings(strictness = Strictness.LENIENT)
  21. class LanguageTableServiceImplTest<M extends LanguageTableMapper> {
  22. @InjectMocks
  23. @Spy
  24. private LanguageTableServiceImpl languageTableServiceImpl;
  25. @Mock
  26. private M mapper;
  27. private AutoCloseable mockitoCloseable;
  28. @BeforeEach
  29. void setUp() throws Exception {
  30. mockitoCloseable = MockitoAnnotations.openMocks(this);
  31. }
  32. @AfterEach
  33. void tearDown() throws Exception {
  34. mockitoCloseable.close();
  35. }
  36. @Test
  37. void test_getAllList_should_return_not_null_when_condition() throws Exception {
  38. // mock静态
  39. MockedStatic<RequestUtil> requestUtilMockedStatic = Mockito.mockStatic(RequestUtil.class);
  40. requestUtilMockedStatic.when(RequestUtil::getAppId).thenReturn("假数据哦");
  41. // setup
  42. LanguageTableDO languageTableDO = new LanguageTableDO();
  43. languageTableDO.setId(111L);
  44. languageTableDO.setCode("code");
  45. languageTableDO.setEnglishName("englishName111");
  46. languageTableDO.setChineseName("chineseName111");
  47. List<LanguageTableDO> list = new ArrayList<>();
  48. list.add(languageTableDO);
  49. LanguageTableDO languageTableDO2 = new LanguageTableDO();
  50. languageTableDO2.setId(222L);
  51. languageTableDO2.setCode("code");
  52. languageTableDO2.setEnglishName("englishName222");
  53. languageTableDO2.setChineseName("chineseName222");
  54. List<LanguageTableDO> list2 = new ArrayList<>();
  55. list2.add(languageTableDO2);
  56. // when(mapper.selectList(any(LambdaQueryWrapper.class))).thenReturn(list);
  57. // 也可以设置多次调用返回不同的结果,比如:第一次返回list,第二次返回list2,后续多次调用,都返回list2
  58. when(mapper.selectList(any(LambdaQueryWrapper.class)))
  59. .thenReturn(list)
  60. .thenReturn(list2);
  61. // run the test
  62. languageTableServiceImpl.test1();
  63. System.out.println("完毕");
  64. }
  65. }

本文转载自: https://blog.csdn.net/qq398581645/article/details/142649279
版权归原作者 Iam傅红雪 所有, 如有侵权,请联系我们删除。

“mock数据,不使用springboot的单元测试”的评论:

还没有评论