在 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");