2017-05-29 173 views
0

我有一个春天启动应用程序(嵌入式的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);

+1

为什么应该是充满除了测试控制器?你直接调用一个方法,你没有使用Spring MVC基础设施进行测试。 –

+0

MockMvc是您测试控制器所需的。 – akuma8

回答

0

也许你需要模拟此调用一些预期RESU LT:

companyService.findAll() 

能够从服务