Mockito:捕获HttpServletResponse#sendError()

时间:2010-06-11 15:52:24

标签: java servlets mockito

我可以使用Mockito来捕获传递给HttpServletResponse#sendError()方法的内容吗?我无法弄清楚如何做到这一点。

3 个答案:

答案 0 :(得分:4)

您应该在Mockito上使用验证方法来执行此操作。通常嘲笑HttpResponse并不是一种愉快的体验。

mockResponse = mock(HttpSR→);
//…
verify(mockResponse, times(1)).sendError(..);

作为sendError的参数,您可以传递mockito匹配器,它可以检查您需要的参数。

答案 1 :(得分:2)

我认为海报想知道如何检索传递给方法的参数。您可以使用:

// given
HttpServletResponse response = mock(HttpServletResponse.class); 
ArgumentCaptor<Integer> intArg = ArgumentCaptor.forClass(Integer.class);
ArgumentCaptor<String> stringArg = ArgumentCaptor.forClass(String.class);
doNothing().when(response).sendError(intArg.capture(), stringArg.capture());

// when (do your test here)
response.sendError(404, "Not found");

// then (do your assertions here, I just print out the values)
System.out.println(intArg.getValue());
System.err.println(stringArg.getValue());

答案 2 :(得分:0)

您可能需要查看Mockito spies(第13章)。对于无法模拟的对象,有时可以检查它们的内部结构并以这种方式存根某些方法。

如果您可以发布一些示例代码,我可以看看它。