J'essaie de créer un test pour mon contrôleur. Voici ce que j'ai similaire. Juste des changements de nom. J'utilise Mockito et Spring MVC. Les fichiers de configuration de test ont les beans autowired dans les moqueurs par l'intermédiaire de la fausse usine. Je reçois un pointeur NULL ...Que fais-je pour me tromper?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={
...
})
public class MyReportControllerTest {
private MockHttpServletRequest request;
private MockHttpServletResponse response;
private MockHttpSession session;
private HandlerAdapter handlerAdapter;
@Autowired
private ApplicationContext applicationContext;
@Autowired
private MyService myService;
@Autowired
private RequestMappingHandlerMapping rmhm;
@Before
public void setUp() throws Exception {
request = new MockHttpServletRequest();
response = new MockHttpServletResponse();
session = new MockHttpSession();
handlerAdapter = applicationContext
.getBean(RequestMappingHandlerAdapter.class);
request.setSession(session);
request.addHeader("authToken", "aa");
Mockito.when(
myService.getMyInfo(YEAR))
.thenReturn(getMyInfoList());
}
@Test
public void testGetMyInfo(){
request.setRequestURI("/getMyInfo/" + 2011);
request.setMethod("GET");
try {
if(handlerAdapter == null){
System.out.println("Handler Adapter is null!");
}
if(request == null){
System.out.println("Request is null!");
}
if(response == null){
System.out.println("Response is null!");
}
if(rmhm.getHandler(request) == null){
System.out.println("rmhm.getHandler(request) is null!");
}
//the above returns null
System.out.println("RMHM: " + rmhm.toString());
System.out.println("RMHM Default Handler: " + rmhm.getDefaultHandler());
handlerAdapter.handle(request, response,
rmhm.getHandler(request)
.getHandler());//null pointer exception here <---
...
} catch (Exception e) {
e.printStackTrace();
fail("getMyReport failed. Exception");
}
}
public List<MyInfo> getMyInfoList(){...}
Je l'ai fait une mise au point approfondie et a constaté que le gestionnaire reste nulle pour ma demande maquette. Qu'est-ce qui me manque pour ne pas être transformé en gestionnaire, ou même aller au gestionnaire par défaut?
Test d'intégration à l'origine. On m'a donné le code de base sans aucune description de l'intention du test. Je me rends compte que je ne peux pas me moquer du service, alors il faudrait que ce soit une intégration, plus tard. J'ai simplement manqué que le bean pour le contrôleur n'a pas été créé dans les fichiers de configuration de test. Tout ce que j'ai fait, c'était ajouter ça et ça a marché. – user1281598