user2652379 user2652379 - 1 month ago 11
Java Question

Spring MVC: How to unit test Model's attribute from a controller method that returns String?

For example,

package com.spring.app;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(final Model model) {
model.addAttribute("msg", "SUCCESS");
return "hello";
}

}


I want to test
model
's attribute and its value from
home()
using JUnit. I can change return type to
ModelAndView
to make it possible, but I'd like to use
String
because it is simpler. It's not must though.

Is there anyway to check
model
without changing
home()
's return type? Or it can't be helped?

Answer

You can use Spring MVC Test:

mockMvc.perform(get("/"))
                .andExpect(status().isOk())
                .andExpect(model().attribute("msg", equalTo("SUCCESS"))) //or your condition

And here is fully illustrated example

Comments