我正在为Spring编写REST API集成测试,我需要传递自定义标头。目前我正在做这样的事情:
mockMvc.perform(get("/something")
.header("header", header.toHeaderString())
其中object是包含我想在头中传递的所有数据的自定义对象,而toHeaderString是一种将此数据序列化为特定格式的String的方法。当我忘记调用HeaderString时,这是a)非常丑陋和b)频繁的烦人错误来源。
有没有办法告诉Spring自动进行此转换?像这样:
mockMvc.perform(get("/something")
.header("header", header)
转换另一种方式(在Controller中)是自动完成的,因为该类有一个接受单个String参数的构造函数。
@RequestMapping(value = "/something", method = RequestMethod.GET)
public Collection<Something> getSomething(
@RequestHeader("header") MyHeader header)
编辑:
所以我发现如果我在MyHeader.toString中进行转换它会起作用。但是,这样,我失去了以人类可读形式记录对象的能力。如果我可以保留toString用于调试目的,那将是很好的,所以我将问题保持打开状态。