Tôi có một POJO được gọi là Trình duyệt mà tôi đã chú thích với chú thích Hibernate Validator.Làm cách nào để có được Spring MVC gọi xác thực trong một bài kiểm tra JUnit?
import org.hibernate.validator.constraints.NotEmpty;
public class Browser {
@NotEmpty
private String userAgent;
@NotEmpty
private String browserName;
...
}
Tôi đã viết kiểm tra đơn vị sau đây cố gắng xác minh phương thức Bộ điều khiển của tôi phát hiện lỗi xác thực.
@Test
public void testInvalidData() throws Exception {
Browser browser = new Browser("opera", null);
MockHttpServletRequest request = new MockHttpServletRequest();
BindingResult errors = new DataBinder(browser).getBindingResult();
// controller is initialized in @Before method
controller.add(browser, errors, request);
assertEquals(1, errors.getErrorCount());
}
Dưới đây là bộ điều khiển của tôi add() phương pháp:
@RequestMapping(value = "/browser/create", method = RequestMethod.POST)
public String add(@Valid Browser browser, BindingResult result, HttpServletRequest request) throws Exception {
if (result.hasErrors()) {
request.setAttribute("errorMessage", result.getAllErrors());
return VIEW_NAME;
}
browserManager.save(browser);
request.getSession(false).setAttribute("successMessage",
String.format("Browser %s added successfully.", browser.getUserAgent()));
return "redirect:/" + VIEW_NAME;
}
Vấn đề tôi đang gặp là kết quả mà không bao giờ có lỗi, vì vậy nó giống như @Valid là không nhận được công nhận. Tôi đã thử thêm sau đây vào lớp thử nghiệm của tôi, nhưng nó không giải quyết được vấn đề.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"file:path-to/WEB-INF/spring-mvc-servlet.xml"})
Có ai biết làm thế nào để @Valid được công nhận (và được xác thực) khi thử nghiệm với JUnit không?
Cảm ơn,
Matt