Spring Boot,MockMvc:如何向模型添加属性?

时间:2016-06-08 21:47:09

标签: spring spring-mvc spring-boot mockmvc

我使用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"在里面。那没用。

有什么想法吗?

0 个答案:

没有答案