Printemps RestController + Junit Test
Je suis en train de jouer autour avec le printemps-test de springframework. Mon intention est de tester le POST suivant de la méthode dans mon repos contrôleur:
@RestController
@RequestMapping("/project")
public class ProjectController {
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public Project createProject(@RequestBody Project project, HttpServletResponse response) {
//TODO: create the object, store it in db...
response.setStatus(HttpServletResponse.SC_CREATED);
//return the created object - simulate by returning the request.
return project;
}
}
C'est mon cas de test:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ProjectController.class })
@WebAppConfiguration
public class ProjectControllerTest {
private MockMvc mockMvc;
@Autowired
private WebApplicationContext wac;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void testCreationOfANewProjectSucceeds() throws Exception {
Project project = new Project();
project.setName("MyName");
String json = new Gson().toJson(project);
mockMvc.perform(
post("/project")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.content(json))
.andExpect(status().isCreated());
}
}
Quand je l'execute, je reçois le Code d'État 415 au lieu de 201. Ce qui me manque? Une simple demande de travaux.
Avez-vous des Jackson ou d'une autre librairie JSON (si le message convertisseur basée sur quelques autres) disponible dans le classpath de sorte Printemps du message convertisseur peut convertir?
J'ai Gson disponibles. Je vais le tester avec Jackson de nouveau. Juste vu que quand @RequestBody est une Chaîne, il fonctionne, donc il semble que la conversion ne fonctionne pas
L'annotation @EnableWebMvc a disparu de mon contrôleur. Maintenant, il fonctionne. Merci pour la réponse!
J'ai Gson disponibles. Je vais le tester avec Jackson de nouveau. Juste vu que quand @RequestBody est une Chaîne, il fonctionne, donc il semble que la conversion ne fonctionne pas
L'annotation @EnableWebMvc a disparu de mon contrôleur. Maintenant, il fonctionne. Merci pour la réponse!
OriginalL'auteur Joschi | 2016-05-26
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter l'annotation
@EnableWebMvc
pour@RestController
à travailler, ce qui est absent de votre code, l'ajout de cette volonté de résoudre la questionje suis d'erreur à la méthode post . son aksing pour créer de la méthode post ce que j'ai pu rater
Hey @KIRANKUMARMATAM pouvez-vous fournir plus de contexte?
OriginalL'auteur rajadilipkolli