在 spring 引导中使用 Mockito 模拟 JsonNode
Mock JsonNode using Mockito in spring boot
如何在 spring 引导中使用 mockito 模拟这两个位置。
JsonNode jsonNode = objectMapper.readValue(httpResponseObject.getResponseBody(), JsonNode.class);
String token = jsonNode.get("token").asText();
我已经使用下面的模拟模拟了第一个位置,但不知道如何模拟第二个位置。
String jsonString = TestingUtil.getResponse();
JsonNode jsonNode = objectMapper.readTree(jsonString);
Mockito.when(objectMapper.readValue(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(jsonNode);
但是这里jsonNode返回空指针异常
这里是mocking的详细解释objectMapper
。
https://www.baeldung.com/mockito-mock-jackson-read-value
其实在单元测试方面,objectMapper和任何class测试没有区别。只需添加要模拟的依赖项,为其指定规则(例如 when->then),断言它。
--编辑--
将 JsonNode 添加为模拟对象。
JsonNode mockNode = mock(JsonNode.class);
JsonNode innerMockNode = mock(JsonNode.class);
Mockito.when(objectMapper.readValue(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(mockNode);
Mockito.when(mockNode.get("token")).thenReturn(innerMockNode);
Mockito.when(innerMockNode.asText()).thenReturn("myToken");
如何在 spring 引导中使用 mockito 模拟这两个位置。
JsonNode jsonNode = objectMapper.readValue(httpResponseObject.getResponseBody(), JsonNode.class);
String token = jsonNode.get("token").asText();
我已经使用下面的模拟模拟了第一个位置,但不知道如何模拟第二个位置。
String jsonString = TestingUtil.getResponse();
JsonNode jsonNode = objectMapper.readTree(jsonString);
Mockito.when(objectMapper.readValue(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(jsonNode);
但是这里jsonNode返回空指针异常
这里是mocking的详细解释objectMapper
。
https://www.baeldung.com/mockito-mock-jackson-read-value
其实在单元测试方面,objectMapper和任何class测试没有区别。只需添加要模拟的依赖项,为其指定规则(例如 when->then),断言它。
--编辑--
将 JsonNode 添加为模拟对象。
JsonNode mockNode = mock(JsonNode.class);
JsonNode innerMockNode = mock(JsonNode.class);
Mockito.when(objectMapper.readValue(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(mockNode);
Mockito.when(mockNode.get("token")).thenReturn(innerMockNode);
Mockito.when(innerMockNode.asText()).thenReturn("myToken");