0

我们有一个 Spring MVC webapp,我们目前能够使用MockHttpServletRequest对象对控制器进行单元测试。

我们的测试类似于:

request = new MockHttpServletRequest(_mockServletContext, "PUT", "/createNewUser.action");
request.setParameter("username", "bob123");
response = new MockHttpServletResponse();
userController.createNewUser(request, response);
// Ensure the user was created, etc.

然后,我们查询底层数据库(和其他控制器)以确保一切正常。

但是,这并没有测试我们正在交付的实际 JSP 页面。只是天气好的嘲笑要求。

我们想要完成的是能够从在浏览器中查看页面的实际用户的角度模拟整个过程,例如:

request = new MockHttpServletRequest(_mockServletContext, "GET", "/newUser.html");
response = new MockHttpServletResponse();
userController.newUser(request, response);
//Pseudo-code!
DOM thePage = SomeBuilder.fromResponse(response);
thePage.getTextField("usernameField").setText("bob123");
thePage.getButton("submitUserButton").click();
// Then, we test the same assertions
...

这有助于我们根据客户端实际看到的视图建立单元测试,并涉及确保存在正确的 HTML 组件,并且支持按钮单击的 Javascript 也在向服务器/控制器发送正确的参数,在例如,有一天它需要用户的名字。或者,如果有错字并且 HTML 表单实际上发送参数“userUsername”而不是“username”。在这种情况下,我们希望删除手动测试要求,因为根据当前经过身份验证的用户的角色,存在不同的代码路径/表单布局。

是否有基于 Java/Spring MVC 的单元测试框架来完成这项任务?或者其他可以提供类似可靠性的代码模式?

4

0 回答 0