JavaEE:单元测试自定义请求包装器

时间:2015-09-24 09:47:33

标签: java unit-testing mocking

我有一个围绕httpServletRequest对象的自定义包装类。包装器的目的是在通过filterChain发送请求之前验证白名单的参数。

我遇到的问题是我已经覆盖了包装器中标准请求对象的getParameter方法;它检查参数是否在hashmap中,如果是,它将使用另一个类的实例对参数执行验证。我怎样才能对getParameter方法进行单元测试,考虑到我无法设置查询字符串或将参数设置到对象上?我已经为实际对象(使用Esapi.Validator()的类)创建了单元测试,它检查参数值是否是有效输入并将布尔值返回给包装器,所以它是否值得我花时间测试包装器? / p>

TestRequestWrapper.java

public class TestRequestWrapper extends HttpServletRequestWrapper{
    private static HashMap<String, EsapiParameterValidator> validationMap = new HashMap<String, EsapiParameterValidator>();
    static{
       /* esapiParameterValidator takes the param name, 
        * name of regex in Esapi.properties, field length 
        * and boolean indicating if the parameter can be null
        */
        validationMap.put("lob", new EsapiParameterValidator("lob", "REG.lob", 3, false));
       // number of other entries
    }

    public TestRequestWrapper(HttpServletRequest request){
        super(request);
    }

    public String getParameter(String parameter){
        String value = super.getParameter(parameter);
        if(validationMap.containsKey(parameter)){
            EsapiParameterValidator epv = validationMap.get(parameter);  
            value = epv.getValidatedParam(value) ? value : "";
        }
        return value;
    }

0 个答案:

没有答案