2

我可以使用Mockito来捕获传递给该HttpServletResponse#sendError()方法的内容吗?我不知道该怎么做。

4

3 回答 3

5

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

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

作为参数,sendError您可以传递模拟匹配器,它可以对您需要的参数进行任何检查。

于 2010-06-14T17:49:31.697 回答
3

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

// 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());
于 2014-10-22T08:55:28.013 回答
0

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

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

于 2010-06-11T16:04:50.003 回答