2017-05-29 6 views
0

Ich habe einen Frühling Boot-Anwendung (embedded Tomcat, Thymeleaf Vorlage ...) Hier eine meiner Controller:@ModelAttribute im Frühjahr Boot-Anwendung

@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(); 
    } 
} 

ich diesen JUnit-Test erstellt haben, um sicherzustellen, dass mein Controller funktioniert

@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); 

    }  
} 

aber ich habe eine AssertionError assertNotNull(companies);

+1

Und warum das gefüllt werden soll? Sie rufen eine Methode direkt auf, Sie verwenden die Spring MVC-Infrastruktur nicht zum Testen. –

+0

MockMvc ist, was Sie brauchen, um einen Controller zu testen. – akuma8

Antwort

0

Wahrscheinlich müssen Sie diesen Anruf mit einigen erwarteten resu verspotten lt:

companyService.findAll() 

der Lage sein, Controller zu testen, abgesehen von Dienstleistungen