Mock HttpServletRequest的getInputStream

Mock HttpServletRequest的getInputStream

如何Mock HttpServletRequest的getInputStream()方法?spring的test包提供了简单易用的api。
示例源码如下所示:


import junit.framework.Assert;
import org.apache.commons.io.IOUtils;
import org.springframework.mock.web.MockHttpServletRequest;

import java.io.IOException;
import java.util.Map;

public class MockHttpServletRequestTest {

    @Test
    public static void test() throws IOException {
        MockHttpServletRequest request = new MockHttpServletRequest(); //创建Mock对象
        request.setContent("{\"token\":\"x\"}".getBytes()); //设置流的内容
        String requestJson = IOUtils.toString(request.getInputStream(), "UTF-8"); //读取流
        Map properties = JSONUtil.fromJson(requestJson, Map.class); //解析jason
        Assert.assertEquals("x",properties.get("token")); //验证
    }
}

JSONUtil 的代码如下所示:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class JSONUtil {
    private static final SerializerFeature[] jsonFeatures = {
        SerializerFeature.WriteMapNullValue,
        SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
        SerializerFeature.PrettyFormat
    };

    public static ObjectMapper objectMapper = new ObjectMapper();
    static {
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); // 不抛出未知属性异常
    }

    public static String toJSONString(Object data){
        return JSON.toJSONString(data, jsonFeatures);
    }

    public static <T> T fromJson(String json, Class<?> clazz) {
        if (objectMapper == null) {
            objectMapper = new ObjectMapper();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
        try {
            return (T) objectMapper.readValue(json, clazz);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

}

依赖的jar gradle配置:

compile 'com.alibaba:fastjson:1.1.43'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.5.2'
compile 'com.fasterxml.jackson.core:jackson-databind:2.5.2'
compile 'com.fasterxml.jackson.core:jackson-core:2.5.2'
compile 'commons-io:commons-io:2.2'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值