Nem*_*min 8 java junit jmockit mocking powermock
嗨,我有一个方法,将URL作为输入,并确定它是否可访问.下面是代码:
public static boolean isUrlAccessible(final String urlToValidate) throws WAGNetworkException {
URL url = null;
HttpURLConnection huc = null;
int responseCode = -1;
try {
url = new URL(urlToValidate);
huc = (HttpURLConnection) url.openConnection();
huc.setRequestMethod("HEAD");
huc.connect();
responseCode = huc.getResponseCode();
} catch (final UnknownHostException e) {
throw new WAGNetworkException(WAGConstants.INTERNET_CONNECTION_EXCEPTION);
} catch (IOException e) {
throw new WAGNetworkException(WAGConstants.INVALID_URL_EXCEPTION);
} finally {
if (huc != null) {
huc.disconnect();
}
}
return responseCode == 200;
}
Run Code Online (Sandbox Code Playgroud)
我想使用isUrlAccessible()方法对单元进行单元测试PowerMockito.我觉得我需要用来whenNew()模拟创建URL和url.openConnection()调用的时候,返回另一个模拟HttpURLConnection对象.但我不确定如何实现这个?我是在正确的轨道上吗?任何人都可以帮我实现这个吗?
您可以使用以下方式模拟新的 Url 实例
whenNew(URL.class)..
Run Code Online (Sandbox Code Playgroud)
确保从 whenNew 调用返回之前创建的模拟对象。
URL mockUrl = Mockito.mock(URL.class);
whenNew(URL.class).....thenReturn(mockUrl );
Run Code Online (Sandbox Code Playgroud)
然后您可以根据需要向模拟添加行为。
找到了解决方案.首先模拟URL类,然后模拟HttpURLConnection,当调用url.openconnection()时,返回这个模拟的HttpURLConnection对象,最后将其响应代码设置为200.继承代码:
@Test
public void function() throws Exception{
RuleEngineUtil r = new RuleEngineUtil();
URL u = PowerMockito.mock(URL.class);
String url = "http://www.sdsgle.com";
PowerMockito.whenNew(URL.class).withArguments(url).thenReturn(u);
HttpURLConnection huc = PowerMockito.mock(HttpURLConnection.class);
PowerMockito.when(u.openConnection()).thenReturn(huc);
PowerMockito.when(huc.getResponseCode()).thenReturn(200);
assertTrue(r.isUrlAccessible(url));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22269 次 |
| 最近记录: |