我使用MockMvc测试控制器上的方法。但是,按照设计,该控制器方法需要将某个属性添加到模型中,这在正常使用中就是这种情况。但是在测试这种方法时,我无法弄清楚如何将属性添加到模型中。
例如:
@RequestMapping(value = 'myEndpoint', method = RequestMethod.POST)
public String IWantToBeTested(Model model, @RequestParam(myParam) String paramValue) {
String needThis = model.asMap().get("NeedThisAttributeSetAlready");
String newThing = needThis + myParam;
model.AddAttribute("NewThing", newThing);
}
当我使用MockMvc运行测试时,它为此函数提供了一个空模型,并且我得到一个空指针异常。
我的测试看起来像这样:
mockMvc.perform(post("/myEndpoint")
.param("myParam", "howdy")
.contentType("application/x-www-form-urlencoded"))
.andExpect(model().attributeExists("NewThing"))
.andExpect(model().attribute("NewThing", "oldThinghowdy"));
我已经尝试了
@Mock
Model model;
但是我不知道什么时候用于()。thenReturn(),因为在Spring Boot的Model界面上没有任何get方法,所以我不知道是什么嘲笑。我试过了:
when(model.asMap()).thenReturn(mockModel.asMap());
其中mockModel在我的测试类中是静态的并且具有" NeedThisAttributeSetAlready"在里面。那没用。
有什么想法吗?