单元测试——Mock RestTemplate
service代码如下:
public class TestServiceImpl implements ITestService {
@Autowired
RestTemplate restTemplate;
@Override
public String getUserName(String sid) {
String userName = "";
//拼接url
String url = "XXX";
JSONObject result = restTemplate.getForObject(url, JSONObject.class);
log.info("调用平台接口:{} ,返回参数为:{}", url, result.toJSONString());
//获取接口返回信息
if ("0000".equals(result.getString("code"))) {
if (result.getJSONObject("data") != null) {
user = result.getJSONObject("data").getString("user");
}
} else {
log.error("调用平台接口返回错误");
}
return userName;
}
}
下面,我们编写单元测试,代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringBootMain.class)
public class TestServiceImplTest extends BaseTest {
@Mock
private RestTemplate restTemplate;
@InjectMocks
TestServiceImpl testService;
/**
* 注入一个web应用环境(容器)
*/
@Resource
WebApplicationContext webApplicationContext;
// mvc 环境对象
public MockMvc mockMvc;
@Before
public void init()throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
@Test
public void testGetUserName() {
String res = "{\"code\":\"0000\",\"data\":{\"name\":\"test\"},\"message\":\"成功\"}";
Mockito.when(restTemplate.getForObject(Mockito.anyString(), Mockito.any())).thenReturn(JSONObject.parseObject(res));
testService.getUserName("test");
}
作者: super_龙
出处:https://www.cnblogs.com/javaTank/p/14637753.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
分类:
java基础
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· Coze Studio:字节跳动 Coze 的开源版本来了!第一时间深度解析
· 复杂业务系统线上问题排查过程
· 在SqlSugar的开发框架的Vue3+ElementPlus前端中增加对报表模块的封装处理,实现常
· 一款超级经典复古的 Windows 9x 主题风格 Avalonia UI 控件库,满满的回忆杀!
· 我给 AI 接上了一个 C# 运行器,结果它学会了自己上网、调试代码