【发布时间】:2018-03-08 03:43:48
【问题描述】:
我有一个控制器,它将application.properties 的属性添加到Model 对象:
@Value("${products}")
private String prod;
@GetMapping("/")
public String greetingForm(Model model) throws IOException {
List<String> products = Arrays.asList(prod.split("\\s*,\\s*"));
model.addAttribute("products",products);
return "form";
}
如何测试这个方法?我对单元测试相当陌生,所以任何建议都将不胜感激。我知道我必须以某种方式模拟Model,但每次我尝试运行测试时,我都会得到NullPointerException。
我的测试:
private MockMvc mockMvc;
@MockBean
private Model model;
@Before
public void setUp() {
this.mockMvc = MockMvcBuilders.standaloneSetup(new WebController()).build();
}
@Test
public void testHomeRoute() {
try {
List<String> products = new ArrayList<String>();
products.add("Product1");
products.add("Product2");
mockMvc.perform(get("/"))
.andExpect(MockMvcResultMatchers.view().name("form"))
.andExpect(MockMvcResultMatchers.model().attribute("products",products));
;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
提前致谢。
【问题讨论】:
标签: spring-boot junit mocking mockito