MockHttpServletRequest对于http前台信息的验证

本文介绍如何利用MockHttpServletRequest在单元测试中验证前端HTTP请求的数据,包括参数、头信息等,结合junit进行有效测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:META-INF/spring/spring-config.xml" })
public class BargainTest {

    private MockHttpServletRequest request;
    private MockHttpServletResponse response;
    private MockHttpSession session;
    private User user;
    private User usernull = null;
    private String productno = "tester";
    private String addressno = "tester";
    private User user_real;
    private User user_NoIsNull;

    @Autowired
    private IBargainOrderService bargainOrderService;
    @Rule
    public ExpectedException thrown = ExpectedException.none();

    @Before
    public void setUp() {
        request = new MockHttpServletRequest();
        request.setCharacterEncoding("UTF-8");
        response = new MockHttpServletResponse();
        session=new MockHttpSession();
        InitUser();

    }

    public void InitUser() {
        user = new User();
        user.setUseNo("i am a tester");
        user.setUsername("Tester");

        user_real=new User();
        user_real.setUseNo("51fb5f2c23ac4c15ad9d6c47fa6c636a");

        user_NoIsNull=new User();
    }

    @Test
    public void ParametersAreNull() {
        // 当参数全部为空

            //request.addParameter("user", "usernull");
            request.setSession(session);
            session.setAttribute("user", usernull);
            JsonResponse response = createOrder(request, null, null, null);
            assertTrue(response.getStatus().contains("erro"));

    }

    @Test
    public void UserNotNull() {
        // 当user not null

        //request.addParameter("user", "user");
        request.setSession(session);
        session.setAttribute("user", user);
        JsonResponse response = createOrder(request, null, null, null);
        assertTrue(response.getStatus().contains("erro"));


    }

    @Test
    public void UserNoNull() {
        // 当userno null

        //request.addParameter("user", "user_NoIsNull");
        request.setSession(session);
        session.setAttribute("user", user_NoIsNull);
        JsonResponse response = createOrder(request, null, null, null);
        assertTrue(response.getStatus().contains("erro"));



    }

    @Test
    public void ProductNotNull() {
        // user not null
        // productno not null

        //request.addParameter("user", "user");
        request.setSession(session);
        session.setAttribute("user", user);
        JsonResponse response = createOrder(request, productno, null, null);
        assertTrue(response.getStatus().contains("erro"));


    }
    @Test
    public void addressNotNull(){
        // user not null but user is not real 
        // productno not null
        //addressno not null

        //request.addParameter("user", "user");
        request.setSession(session);
        session.setAttribute("user", user);
        JsonResponse response = createOrder(request, productno, addressno, null);
        assertTrue(response.getStatus().contains("erro"));

    }
    @Test
    public void userfrozen(){
        // user not null but user is not real 
        // productno not null
        //addressno not null

        user_real.setUseState(User.USESTATE_FREEZE);
        //request.addParameter("user", "user_real");
        request.setSession(session);
        session.setAttribute("user", user_real);
        JsonResponse response = createOrder(request, productno, addressno, null);
        assertTrue(response.getStatus().contains("erro"));

    }
    @Test
    public void addressIsNull(){
        // user not null but user is not real 
        // productno not null
        //addressno not null

        user_real.setUseState(User.USESTATE_NORMAL);
        request.setSession(session);
        session.setAttribute("user", user_real);
        //request.addParameter("user", "user_real");
        JsonResponse response = createOrder(request, productno, addressno, null);
        assertTrue(response.getStatus().contains("erro"));

    }

    @Test
    public void OneBargainCheck(){
        //只能一次砍价
        user_real.setUseState(User.USESTATE_NORMAL);
        addressno="42ac19af23e14704b7a4fbc9f7baf4ea";
        productno="4db354c943ba471d8b88478c376771b8";
        request.setSession(session);
        session.setAttribute("user", user_real);
        //request.addParameter("user", "user_real");
        JsonResponse response = createOrder(request, productno, addressno, null);
        assertTrue(response.getStatus().contains("erro"));


    }

    public JsonResponse createOrder(HttpServletRequest req, String productNo,
            String addressNo, String bzh) {
        JsonResponse resp = new JsonResponse();
        try {
            User user = (User) req.getSession().getAttribute("user");
            if (user == null)
                throw new Exception("用户登录超时,请重新登录");
            Order order = bargainOrderService.createOrder(user.getUseNo(),
                    productNo, addressNo, bzh);
            resp.setStatus("success");
            resp.setResult(order);
        } catch (Exception e) {
            resp.setStatus("error");
            resp.setResult(e.getMessage());
        }
        return resp;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值