@ModelAttribute在春季启动应用程序
问题描述:
我有一个春天启动应用程序(嵌入式的Tomcat,Thymeleaf模板......)我的控制器 这里之一:@ModelAttribute在春季启动应用程序
@Controller
@RequestMapping("/company")
public class CompanyController {
@RequestMapping(value = { "/list" }, method = { RequestMethod.GET })
public String companyList(Company company, ModelMap model) {
return serverContextPath + COMPANY_LIST_VIEW_NAME;
}
@ModelAttribute("companies")
public Iterable<Company> companies(){
return companyService.findAll();
}
}
我创建这个JUnit测试来验证我的控制器正常工作
@ContextConfiguration(classes = { MyApplicationConfig.class })
public class CompanyControllerTests {
private CompanyController controller;
@Value("${server.contextPath}")
protected String serverContextPath;
@Before
public void setUp() throws Exception {
controller = new CompanyController();
}
@Test
public void testCompanyList() {
ExtendedModelMap model = new ExtendedModelMap();
String viewName = controller.companyList(new Company(), model);
assertEquals(serverContextPath + CompanyController.COMPANY_LIST_VIEW_NAME, viewName);
Iterable<Company> companies = (Iterable<Company>) model.get("companies");
assertNotNull(companies);
}
}
但我有一个AssertionError assertNotNull(companies);
答
也许你需要模拟此调用一些预期RESU LT:
companyService.findAll()
能够从服务
为什么应该是充满除了测试控制器?你直接调用一个方法,你没有使用Spring MVC基础设施进行测试。 –
MockMvc是您测试控制器所需的。 – akuma8