aur*_*amo 10 java apache unit-testing mocking mockito
我在模拟Apache Http客户端时遇到了问题.以下尝试创建模拟:
DefaultHttpClient httpClient = Mockito.mock(DefaultHttpClient.class);
Run Code Online (Sandbox Code Playgroud)
无法创建真正的模拟.上面的行没有异常执行,但是当我尝试存根某些行为时:
Mockito.when(httpClient.execute(Mockito.<HttpUriRequest>anyObject())).thenReturn(null);
Run Code Online (Sandbox Code Playgroud)
我从AbstractHttpClient中的方法得到一个异常:
Exception in thread "main" java.lang.IllegalArgumentException: Request must not be null.
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:572)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
Run Code Online (Sandbox Code Playgroud)
为什么调用在Mockito.when内部执行时传递给AbstractHttpClient?
我找到了解决这个特定问题的方法:使用接口HttpClient而不是试图模拟具体的子类.在这种情况下,这是一个更好的解决方案,但我想知道这里发生了什么?为什么我不能用Mockito正确地模仿这个具体的课程?DefaultHttpClient有什么特别之处吗?还有其他情况Mockito不能模拟具体课程吗?
我在OSX上使用Mockito 1.8.5,Apache httpclient 4.0.3,Apache http核心4.1,JDK 1.6.0
| 归档时间: |
|
| 查看次数: |
8239 次 |
| 最近记录: |