से मुझे लगता है कि इस तरह दिखता है स्प्रिंग 3.1 का उपयोग कर एक रेस्ट नियंत्रक विधि है:वसंत MVC 3 सामग्री प्रकार "application/json" ग्राहक से काम करता है लेकिन नहीं इकाई परीक्षण
@RequestMapping(value="/user", method=RequestMethod.POST, consumes={MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<String> addUser(@RequestBody @Valid User user){
System.out.println("called/user method");
try{
user = userService.addUser(user);
return responseBuilder.addApiResourceSucceeded(user,null);
}catch(Exception e){
return responseBuilder.apiActionFailed("user already exists", HttpStatus.CONFLICT);
}
}
मैं परीक्षण है जो इस तरह दिखता है :
@Before
public void setUp() {
adapter = new AnnotationMethodHandlerAdapter();
request = new MockHttpServletRequest();
response = new MockHttpServletResponse();
mapper = new ObjectMapper();
}
@Test
public void testAddUser() throws Exception {
request.setMethod("POST");
request.setContentType(MediaType.APPLICATION_JSON_VALUE);
request.setRequestURI("/user");
ObjectNode userJson = mapper.createObjectNode();
userJson.put("userId", "jonnybz");
userJson.put("email", "[email protected]");
userJson.put("password", "password");
userJson.put("longitude",-10.127205999);
userJson.put("latitude", 57.252269);
ArrayNode arrNode = mapper.createArrayNode();
arrNode.add(-10.1272059999);
arrNode.add(57.2522);
userJson.put("lonLat",arrNode);
request.setContent(mapper.writeValueAsBytes(userJson));
adapter.handle(request, response, userController);
String content = response.getContentAsString();
assertEquals(200, response.getStatus());
User user = dao.listAll().get(0);
objectId = user.getId();
assertNotNull(objectId);
}
जब मैं अपने ग्राहक ऐप्लिकेशन से इस endpoint के खिलाफ एक फोन पर अमल (कोणीय के साथ विकसित किया) यह बहुत अच्छा काम करता है, लेकिन जब मैं अपने परीक्षण चलाने मैं एक "सामग्री प्रकार 'आवेदन/json' जो से आ रहा है मिल एक HttpMediaTypeNotSupportedException "त्रुटि है कि मैं ट्रैक नहीं कर सकता। अनुरोध मेरी विधि को कभी नहीं मारा प्रतीत होता है। क्या मैं यहाँ कुछ आसान याद कर रहा हूँ?
spring-mvc-test ढांचे का उपयोग करने जा और इस तरह अपने परीक्षण का निर्माण करके इस समस्या को हल:
@Test
public void testAddUser() throws Exception {
ObjectNode userJson = mapper.createObjectNode();
userJson.put("userId", "jonnbz");
userJson.put("email", "[email protected]");
userJson.put("password", "password");
userJson.put("longitude",-10.667205999);
userJson.put("latitude", 74.252269);
ArrayNode arrNode = mapper.createArrayNode();
arrNode.add(-10.667205999);
arrNode.add(74.252269);
userJson.put("lonLat",arrNode);
MvcResult res = MockMvcBuilders.xmlConfigSetup("classpath:test-context.xml").build()
.perform(MockMvcRequestBuilders.post("/user")
.accept(MediaType.APPLICATION_JSON)
.contentType(MediaType.APPLICATION_JSON)
.body(mapper.writeValueAsBytes(userJson)))
.andExpect(status().isOk())
.andExpect(content().type(MediaType.APPLICATION_JSON))
.andReturn();
System.out.println(res.getResponse().getContentAsString());
}
आपको उत्तर इनलाइन के साथ प्रश्न को अपडेट करने के बजाय अपने स्वयं के प्रश्न का उत्तर देना चाहिए। – ddewaele