单元测试——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」创作共享协议,转载请在文章明显位置注明作者及出处。
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· JavaScript中如何遍历对象?
· 领域模型应用
· 记一次 ADL 导致的 C++ 代码编译错误
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 为什么PostgreSQL不自动缓存执行计划?
· 从被喷“假开源”到登顶 GitHub 热榜,这个开源项目上演王者归来!
· Stack Overflow,轰然倒下!
· Cursor 1.2重磅更新,这个痛点终于被解决了!
· 上周热点回顾(6.30-7.6)
· .NET AI 模板