java.lang.AssertionError: Statut prévu:<200> mais il a été:<400> dans junit
c'est mon contrôleur...
@GET
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/categories")
public POSResponse getAllCategories() {
String countryCode="1";
return infoService.getAllCategories(countryCode);
}
c'est mon testController....
@Mock
InfoService infoService;
@InjectMocks
private InfoController infoController;
private MockMvc mockMvc;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(infoController).build();
}
@Test
public void getAllCategoriesTest() throws Exception {
POSResponse response=new POSResponse();
Category category=new Category();
category.setCountryCode(1);
category.setDescription("Mother Dairy");
response.setResponse(category);
when(infoService.getAllCategories("1")).thenReturn(response);
mockMvc.perform(get("/categories"))
.andExpect(status().isOk())
.andExpect(content().contentType(APPLICATION_JSON_UTF8))
.andExpect(jsonPath("$.id", is(1)))
.andExpect(jsonPath("$.description", is("Mother Dairy")));
verify(infoService, times(1)).getAllCategories("1");
verifyNoMoreInteractions(infoService);
}
je suis à l'aide de jersey contrôleur.
lorsque j'appelle la méthode que j'ai msg d'erreur"java.lang.AssertionError: Statut prévu:<200> mais il a été:<400>"
- dans le contrôleur, le param name est "videoid", et dans le test qu'il est "videoId". Avis le cas du " je " dans Id
- Quel est la sortie dans les fichiers de log? Vous devriez avoir une stacktrace là avec plus d'explications.
- videoid != videoId. Une autre chose est de savoir comment vous êtes moqueur Manager. Vous ne pouvez pas se moquer des méthodes statiques (je suppose que vous utilisez Mockito). Si c'est juste une faute de frappe (manager est un exemple), vous devez déplacer lorsque(...)... avant d'appeler mockMvc parce que vous aurez probablement nulle réponse.
- oui j'ai eu la réponse nulle parce que je ne suis pas définir la valeur du message de réponse. et j'utilise le mockito ,et j'ai InjectMocks mon contrôleur dans la maquette de mon manager. si vous avez une meilleure idée alors s'il vous plaît me suggérer. MERCI.
Vous devez vous connecter pour publier un commentaire.
HTTP 400 Stands pour Bad Request, qui, comme par le spécification doivent être retournés lorsque:
Depuis votre contrôleur, vous avez défini:
@RequestParam(value = "videoid", required = true) String videoId)
et dans votre test, vous êtes de passage à videoId, le printemps n'est pas en mesure de correspondre à la videoid qui est un paramètre obligatoire et soulève ainsi400
erreur.Veuillez noter que le paramètre dans votre demande doit correspondre à ce que vous avez définies comme
value
dans leRequestParam
et pas le nom du paramètre.La seule façon de le résoudre est d'ajouter(mvc:annotation-driven):
dans votre fichier xml où vous l'avez mentionné toute la configuration spring.
Lors de l'exécution du cas de test, les journaux, a déclaré que le modèle d'url donné, il l'habitude de trouver. Même les journaux a dit qu'il ne trouve pas de contrôleur.
Peut-être cela va de l'aide à quelqu'un.