【问题标题】:Junit Test For reading from a JsonNode用于从 JsonNode 读取的 Junit 测试
【发布时间】:2021-05-28 12:37:38
【问题描述】:

我有一个代码,我正在使用 JsonNode 从文本文件中读取 json

//inside class
@Mock ObjectMapper objectMapper;

//inside method
byte[] byte = Files.readAllBytes(Paths.get(abc.txt));
JsonNode jsonNode= objectMapper.readValue(byte,JsonNode.class);
JsonNode node = jsonNode.path("id");

下面是文件中的json结构为:

{ "id" : 
      {
         "firstName": "something",
         "lastName" : "something"
      }
}

我想要这个块的单元测试代码

我是 Junit 测试的新手

【问题讨论】:

    标签: java spring-boot unit-testing junit mockito


    【解决方案1】:

    要构造 JsonNode 你可以使用

    String jsonString = "{ \"id\" : \n" +
                    "      {\n" +
                    "         \"firstName\": \"something\",\n" +
                    "         \"lastName\" : \"something\"\n" +
                    "      }\n" +
                    "}";
    
            ObjectMapper mapper = new ObjectMapper();
            
            JsonNode node = mapper.readTree(jsonString);
    

    之后,您可以使用轻松模拟映射器的行为

    when(objectMapper.readValue(any(), any())).thenReturn(node);
    

    【讨论】:

      【解决方案2】:

      使用 Mockito 模拟 Object Mapper 的行为,类似

      when(objectMapper.readValue(any(), any())).thenReturn(your expected value);
      

      所以基本上,你模拟依赖类的行为并验证测试类的行为。

      这应该会有所帮助 - https://www.vogella.com/tutorials/Mockito/article.html

      【讨论】:

      • 我尝试使用何时但如何返回 JsonNode 对象来模拟 objectMapper。如何构造 JsonNode 对象?
      • JsonNode 是一个抽象类,你也必须模拟它的行为。
      • 当我调试这个时,因为测试来了这一行 "JsonNode jsonNode= objectMapper.readValue(byte,JsonNode.class)"; jsonNode 显示为空。
      猜你喜欢
      • 2014-10-06
      • 2023-03-30
      • 1970-01-01
      • 2021-04-24
      • 2011-12-15
      • 2012-02-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      相关资源
      最近更新 更多