Junit 断言失败的 HTTP post 请求

纵帆船_101

我的 Spring Boot 应用程序有一个 HTTPClient 测试。如果对服务器的 POST 请求是 2048 字节或以上的字符串,我有一个类会抛出异常。

@Component
 public class ApplicationRequestSizeLimitFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request,
            HttpServletResponse response, FilterChain filterChain)
                    throws ServletException, IOException {
        System.out.println(request.getContentLength());
        if (request.getContentLengthLong() >= 2048) {
            throw new IOException("Request content exceeded limit of 2048 bytes");
        }
        filterChain.doFilter(request, response);

    }


}

我为它创建了一个单元测试,但我不确定如何编写断言语句来检查它是否无法发布请求。

现在我在我的测试课上有这个

@Test
    public void testSize() throws ClientProtocolException, IOException {
        Random r = new Random(123);
        long start = System.currentTimeMillis();
        String s = "";
        for (int i = 0; i < 65536; i++)
            s += r.nextInt(2);
        String result = Request.Post(mockAddress)
                .connectTimeout(2000)
                .socketTimeout(2000)
                .bodyString(s, ContentType.TEXT_PLAIN)
                .execute().returnContent().asString();

    }

这个测试失败了,这正是我想要的,但我想创建一个断言以便它通过(断言它由于超过字节限制而使 http 响应失败)。

阿诺

@Test 有一个参数来断言特定的异常被抛出,你可以编写你的测试,例如:

    @Test(expected = IOException.class)
    public void testSize() throws ClientProtocolException, IOException {
    ...
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章