J'essaie d'écrire des tests unitaires pour mes contrôleurs dans une application Web Spring MVC. J'ai déjà eu un ensemble assez complet de tests unitaires pour le modèle de domaine, mais pour être complet, je veux aussi tester les contrôleurs.Unités contrôlant les contrôleurs avec des annotations
Le problème auquel je fais face est de tenter de les tester sans charger un contexte Spring. J'ai pensé que je pourrais contourner ceci avec moqueur, mais la méthode dans le contrôleur a une annotation @Transactional qui essaye d'ouvrir une transaction (et échoue avec une exception NullPointerException parce qu'aucun contexte de ressort n'est chargé).
Exemple de code:
public class UsersController {
@Autowired private UserManager userManager;
@Transactional
@RequestMapping(method = RequestMethod.POST)
public ModelAndView create(User user) {
userManager.save(user);
ModalAndView mav = new ModelAndView();
mav.addObject("user", user);
mav.setViewName("users/view");
return mav;
}
}
donc essentiellement je veux tester le comportement sans charger un contexte et persistant en fait l'utilisateur.
Est-ce que quelqu'un a des idées sur la façon dont je peux y parvenir?
Cheers,
Caps
Peut-être que vous avez spécifié le coureur de test de printemps sur votre test? Sinon, @Transactional ne doit pas provoquer l'échec du test. – oksayt
Vous avez raison. Merci pour ça! N'hésitez pas à mettre cela comme réponse et je vais le corriger. – Caps