में खाली अपवाद निकाय मुझे प्रतिक्रिया बॉडी में अपवाद संदेश शामिल करने के लिए MockMvc बनाने की कोशिश करते समय परेशानी हो रही है।स्प्रिंग एमवीसी टेस्ट
@RequestMapping("/user/new")
public AbstractResponse create(@Valid NewUserParameters params, BindingResult bindingResult) {
if (bindingResult.hasErrors()) throw BadRequestException.of(bindingResult);
// ...
}
जहां BadRequestException
इस तरह sth दिखता है:: मैं एक नियंत्रक के रूप में निम्नानुसार है
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "bad request")
public class BadRequestException extends IllegalArgumentException {
public BadRequestException(String cause) { super(cause); }
public static BadRequestException of(BindingResult bindingResult) { /* ... */ }
}
और मैं /user/new
नियंत्रक के खिलाफ निम्न परीक्षण चलाने: जो निम्नलिखित उत्पादन प्रिंट
@Test
public void testUserNew() throws Exception {
getMockMvc().perform(post("/user/new")
.param("username", username)
.param("password", password))
.andDo(print())
.andExpect(status().isOk());
}
:
Resolved Exception:
Type = controller.exception.BadRequestException
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
MockHttpServletResponse:
Status = 400
Error message = bad request
Headers = {X-Content-Type-Options=[nosniff], X-XSS-Protection=[1; mode=block], Cache-Control=[no-cache, no-store, max-age=0, must-revalidate], Pragma=[no-cache], Expires=[0], X-Frame-Options=[DENY]}
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []
क्या किसी को पता है कि Body
print()
आउटपुट में क्यों गुम है?
संपादित करें: मैं किसी भी कस्टम अपवाद हैंडलर का उपयोग नहीं कर रहा हूं और जब मैं सर्वर चलाता हूं तो कोड अपेक्षित काम करता है। यही है, एप्लिकेशन को चलाने और सर्वर को एक ही अनुरोध करने से
{"timestamp":1423076185822,
"status":400,
"error":"Bad Request",
"exception":"controller.exception.BadRequestException",
"message":"binding failed for field(s): password, username, username",
"path":"/user/new"}
अपेक्षित के रूप में वापस लौटाता है। इसलिए, मुझे लगता है कि MockMvc
के साथ एक समस्या है। यह किसी भी तरह अपवाद के message
फ़ील्ड को कैप्चर करने से चूकता है, जबकि नियमित अनुप्रयोग सर्वर का डिफ़ॉल्ट अपवाद हैंडलर अपेक्षा के अनुसार काम करता है।
मैं डिफ़ॉल्ट अपवाद हैंडलर का उपयोग कर रहा हूं। समस्या यह है कि, 'MockMvc'' संदेश' फ़ील्ड को कैप्चर नहीं करता है, जबकि नियमित अनुप्रयोग सर्वर का डिफ़ॉल्ट अपवाद हैंडलर करता है। (प्रश्न में मेरा संपादन देखें।) –