我有一个名为 JsonMarshall(T t)
的方法,它接受一个对象并将其转换为 Json 字符串。在此方法中,我使用 Objectmapper
来完成此任务:
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t)
现在,假设我有一个 ClientName
类,其属性为 Title 和 Name,用于测试。现在,当我尝试使用我的方法将 ClientName
转换为 json 字符串,并通过针对某些预期的 Json 字符串断言其输出来测试此方法,例如:
expectedString = "{\"title\":\"RandomTitle",\"Name\":\"RandomName\"}"
我有两种情况:
当我在方法中使用
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(t)
时,测试失败。当我只执行
mapper.writeValueAsString(t)
时测试通过
所以我猜想 writerWithDefaultPrettyPrinter()
的缩进导致测试失败。
有什么想法可以让第一个场景的测试通过吗?
最佳答案
我假设第一个测试失败,因为输出打印得很漂亮,并且包含其他格式符号,例如换行符和空格。
你可以做什么:
- 只需在第一个测试方法中使用另一个预期的字符串即可。
- 解析被测方法的返回字符串,并将反序列化的对象用于测试方法。
- 您可以使用 JsonPath lib用于您的测试(与 XPath 类似)。 我用JsonPathResultMatcher测试基于 Spring 框架的 RESTful Web 服务。
关于json - 如何在启用 pretty-print 的情况下对 JsonMarshaller 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439778/