51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 810|回复: 2
打印 上一主题 下一主题

junit单元测试,mock数据后,调用时返回数据为null

[复制链接]
  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2022-7-25 13:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    junit单元测试,mock数据后,调用时返回数据为null
    1. package com.zdicc.online.core.service;

    2. import com.alibaba.fastjson.JSONObject;
    3. import com.zdicc.online.core.ZdiccApplicationTests;
    4. import com.zdicc.online.core.dto.DatasourceDto;
    5. import java.util.*;
    6. import org.junit.jupiter.api.Assertions;
    7. import org.junit.jupiter.api.BeforeEach;
    8. import org.junit.jupiter.api.Test;
    9. import org.mockito.Mockito;
    10. import org.mockito.MockitoAnnotations;
    11. import org.springframework.beans.factory.annotation.Autowired;
    12. import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
    13. import org.springframework.boot.test.mock.mockito.MockBean;
    14. import org.springframework.web.client.RestTemplate;

    15. @AutoConfigureMockMvc
    16. public class DatasourceServiceTest extends ZdiccApplicationTests {

    17.   @MockBean
    18.   private RestTemplate restTemplate;
    19.   @Autowired
    20.   private DatasourceService datasourceService;

    21.   @BeforeEach
    22.   public void init() {
    23.     MockitoAnnotations.initMocks(this);
    24.   }

    25.   @Test
    26.   public void remoteGetDatasourceByTypeIds() {
    27.     Map<String, List<Integer>> map = new HashMap<>();
    28.     map.put("job", Collections.singletonList(105));
    29.     map.put("api", Collections.singletonList(101));

    30.      String response = "{\n" +
    31.          "\t\"status\": 1,\n" +
    32.          "\t\"data\": [{\n" +
    33.          "\t\t\"dbType\": \"mysql\",\n" +
    34.          "\t\t\"nodeType\": \"api\",\n" +
    35.          "\t\t\"originId\": 101,\n" +
    36.          "\t\t\"sourceType\": 1,\n" +
    37.          "\t\t\"url\": \"192.168.100.134:3306/demo.create_tables\"\n" +
    38.          "\t}, {\n" +
    39.          "\t\t\"dbType\": \"mysql\",\n" +
    40.          "\t\t\"nodeType\": \"job\",\n" +
    41.          "\t\t\"originId\": 195,\n" +
    42.          "\t\t\"sourceType\": 1,\n" +
    43.          "\t\t\"url\": \"192.168.100.134:3306/demo.vote_demo\"\n" +
    44.          "\t}, {\n" +
    45.          "\t\t\"dbType\": \"hive\",\n" +
    46.          "\t\t\"nodeType\": \"job\",\n" +
    47.          "\t\t\"originId\": 195,\n" +
    48.          "\t\t\"sourceType\": 2,\n" +
    49.          "\t\t\"url\": \"hello.demo_vote_demo_hourly_vera2\"\n" +
    50.          "\t}, {\n" +
    51.          "\t\t\"dbType\": \"mysql\",\n" +
    52.          "\t\t\"nodeType\": \"job\",\n" +
    53.          "\t\t\"originId\": 150,\n" +
    54.          "\t\t\"sourceType\": 1,\n" +
    55.          "\t\t\"url\": \"192.168.100.134:3306/demo.vote_demo\"\n" +
    56.          "\t}, {\n" +
    57.          "\t\t\"dbType\": \"hive\",\n" +
    58.          "\t\t\"nodeType\": \"job\",\n" +
    59.          "\t\t\"originId\": 150,\n" +
    60.          "\t\t\"sourceType\": 2,\n" +
    61.          "\t\t\"url\": \"default.david_test_vote_demo\"\n" +
    62.          "\t}]\n" +
    63.          "}";

    64.     JSONObject jsonObject = JSONObject.parseObject(response);
    65.     Mockito.when(this.restTemplate.postForObject(Mockito.any(), Mockito.anyList(), Mockito.any()))
    66.         .thenReturn(jsonObject);

    67.     Map<String, List<DatasourceDto>> resMap = datasourceService.remoteGetDatasourceByTypeIds(map);
    68.     Assertions.assertNotNull(resMap);
    69.   }
    70. }

    复制代码
    运行结果及报错内容
    1. public Map<String, List<DatasourceDto>> remoteGetDatasourceByTypeIds(Map<String, List> typeIdsMap) {
    2.     if (typeIdsMap == null || typeIdsMap.isEmpty()) {
    3.       return null;
    4.     }

    5.     String url = onlineEnvConfig.getDAAM_BASE_URL() + DAAM_DATASOURCE_URI;
    6.     List<Map<String, Object>> paramMap = new ArrayList<>();
    7.     Map<String, Object> subMap = null;
    8.     for (String nodeType : typeIdsMap.keySet()) {
    9.       subMap = new HashMap<>();
    10.       subMap.put("nodeType", nodeType);
    11.       subMap.put("originalIdList", typeIdsMap.get(nodeType));
    12.       paramMap.add(subMap);
    13.     }
    14.     JSONObject response = null;
    15.     try {
    16.       response = restTemplate.postForObject(url, paramMap, JSONObject.class);
    17.       //这里返回null,并没有返回mock的内容
    18.     } catch (RestClientException e) {
    19.       log.error("Failed to request step datasource detail, e = {}", e.getMessage(), e);
    20.       // FIXME: 2021/2/26 是否需要直接报错
    21.       //            throw new OnlineException(ResponseEnum.REST_TEMPLATE_REQUEST_FAIL);
    22.     }
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    3 天前
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2022-7-26 10:35:34 | 只看该作者
    检查下mock的配置
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    3#
    发表于 2022-7-26 16:35:08 | 只看该作者
    看返回信息啊
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 01:33 , Processed in 0.062169 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表