Skip to content

Commit 97d20b5

Browse files
author
Szabolcs Andrasi
committed
Migrate from EasyMock to Mockito.
1 parent 3b45c72 commit 97d20b5

4 files changed

Lines changed: 133 additions & 139 deletions

File tree

geocoder-google/src/test/java/com/github/sandrasi/geocoder/google/v3/GoogleGeocodeRequestTest.java

Lines changed: 61 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@
1717
import org.apache.http.client.HttpClient;
1818
import org.apache.http.client.methods.HttpGet;
1919
import org.apache.http.conn.ClientConnectionManager;
20-
import org.easymock.Capture;
21-
import org.easymock.EasyMock;
2220
import org.junit.Before;
2321
import org.junit.Test;
22+
import org.mockito.ArgumentCaptor;
2423

2524
import static com.github.sandrasi.geocoder.components.GeocodeStatus.*;
26-
import static org.easymock.EasyMock.*;
2725
import static org.hamcrest.CoreMatchers.*;
2826
import static org.junit.Assert.*;
27+
import static org.mockito.BDDMockito.*;
28+
import static org.mockito.Matchers.any;
2929

3030
public class GoogleGeocodeRequestTest {
3131

@@ -37,7 +37,7 @@ public class GoogleGeocodeRequestTest {
3737

3838
@Before
3939
public void setUp() {
40-
httpClient = EasyMock.createMock(HttpClient.class);
40+
httpClient = mock(HttpClient.class);
4141
googleGeocoder = GoogleGeocoderFactory.createGoogleGeocoder(httpClient);
4242
}
4343

@@ -48,24 +48,23 @@ public void shouldExecuteAddressGeocoding() throws Exception {
4848
.withRegionBiasing("us")
4949
.withViewportBiasing(GeographicLocation.fromValues(0, 0), GeographicLocation.fromValues(1, 1))
5050
.build();
51-
Capture<HttpGet> capturedHttpGet = new Capture<>();
52-
HttpResponse httpResponse = EasyMock.createMock(HttpResponse.class);
53-
StatusLine statusLine = EasyMock.createMock(StatusLine.class);
54-
HttpEntity httpEntity = EasyMock.createMock(HttpEntity.class);
55-
ClientConnectionManager clientConnectionManager = EasyMock.createMock(ClientConnectionManager.class);
56-
57-
expect(httpClient.execute(capture(capturedHttpGet))).andReturn(httpResponse);
58-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
59-
expect(statusLine.getStatusCode()).andReturn(HTTP_OK);
60-
expect(httpResponse.getEntity()).andReturn(httpEntity);
61-
expect(httpEntity.getContent()).andReturn(new ByteArrayInputStream("{\"status\":\"ZERO_RESULTS\",\"results\":[]}".getBytes()));
62-
expect(httpClient.getConnectionManager()).andReturn(clientConnectionManager);
51+
HttpResponse httpResponse = mock(HttpResponse.class);
52+
StatusLine statusLine = mock(StatusLine.class);
53+
HttpEntity httpEntity = mock(HttpEntity.class);
54+
ClientConnectionManager clientConnectionManager = mock(ClientConnectionManager.class);
55+
56+
given(httpClient.execute(any(HttpGet.class))).willReturn(httpResponse);
57+
given(httpResponse.getStatusLine()).willReturn(statusLine);
58+
given(statusLine.getStatusCode()).willReturn(HTTP_OK);
59+
given(httpResponse.getEntity()).willReturn(httpEntity);
60+
given(httpEntity.getContent()).willReturn(new ByteArrayInputStream("{\"status\":\"ZERO_RESULTS\",\"results\":[]}".getBytes()));
61+
given(httpClient.getConnectionManager()).willReturn(clientConnectionManager);
6362
clientConnectionManager.closeExpiredConnections();
64-
replay(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
6563

6664
GeocodeResponse geocodeResponse = subject.execute();
6765

68-
verify(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
66+
ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
67+
verify(httpClient).execute(httpGetCaptor.capture());
6968

7069
URI expectedUri = URI.create("http://maps.googleapis.com/maps/api/geocode/json?"
7170
+ "address=" + URLEncoder.encode("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "UTF-8")
@@ -74,7 +73,7 @@ public void shouldExecuteAddressGeocoding() throws Exception {
7473
+ "&language=en"
7574
+ "&sensor=false");
7675

77-
assertThat(capturedHttpGet.getValue().getURI(), is(expectedUri));
76+
assertThat(httpGetCaptor.getValue().getURI(), is(expectedUri));
7877
assertThat(geocodeResponse.getGeocodeStatus(), is(ZERO_RESULTS));
7978
assertThat(geocodeResponse.getQueryString(), is("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"));
8079
assertThat(geocodeResponse.getGeocodedAddresses(), is(Collections.<GeocodedAddress>emptyList()));
@@ -87,24 +86,23 @@ public void shouldExecuteAddressLookup() throws Exception {
8786
.withRegionBiasing("us")
8887
.withViewportBiasing(GeographicLocation.fromValues(0, 0), GeographicLocation.fromValues(1, 1))
8988
.build();
90-
Capture<HttpGet> capturedHttpGet = new Capture<>();
91-
HttpResponse httpResponse = EasyMock.createMock(HttpResponse.class);
92-
StatusLine statusLine = EasyMock.createMock(StatusLine.class);
93-
HttpEntity httpEntity = EasyMock.createMock(HttpEntity.class);
94-
ClientConnectionManager clientConnectionManager = EasyMock.createMock(ClientConnectionManager.class);
95-
96-
expect(httpClient.execute(capture(capturedHttpGet))).andReturn(httpResponse);
97-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
98-
expect(statusLine.getStatusCode()).andReturn(HTTP_OK);
99-
expect(httpResponse.getEntity()).andReturn(httpEntity);
100-
expect(httpEntity.getContent()).andReturn(new ByteArrayInputStream("{\"status\":\"ZERO_RESULTS\",\"results\":[]}".getBytes()));
101-
expect(httpClient.getConnectionManager()).andReturn(clientConnectionManager);
89+
HttpResponse httpResponse = mock(HttpResponse.class);
90+
StatusLine statusLine = mock(StatusLine.class);
91+
HttpEntity httpEntity = mock(HttpEntity.class);
92+
ClientConnectionManager clientConnectionManager = mock(ClientConnectionManager.class);
93+
94+
given(httpClient.execute(any(HttpGet.class))).willReturn(httpResponse);
95+
given(httpResponse.getStatusLine()).willReturn(statusLine);
96+
given(statusLine.getStatusCode()).willReturn(HTTP_OK);
97+
given(httpResponse.getEntity()).willReturn(httpEntity);
98+
given(httpEntity.getContent()).willReturn(new ByteArrayInputStream("{\"status\":\"ZERO_RESULTS\",\"results\":[]}".getBytes()));
99+
given(httpClient.getConnectionManager()).willReturn(clientConnectionManager);
102100
clientConnectionManager.closeExpiredConnections();
103-
replay(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
104101

105102
GeocodeResponse geocodeResponse = subject.execute();
106103

107-
verify(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
104+
ArgumentCaptor<HttpGet> httpGetCaptor = ArgumentCaptor.forClass(HttpGet.class);
105+
verify(httpClient).execute(httpGetCaptor.capture());
108106

109107
URI expectedUri = URI.create("http://maps.googleapis.com/maps/api/geocode/json?"
110108
+ "latlng=" + URLEncoder.encode("37.422782,-122.085099", "UTF-8")
@@ -113,7 +111,7 @@ public void shouldExecuteAddressLookup() throws Exception {
113111
+ "&language=en"
114112
+ "&sensor=false");
115113

116-
assertThat(capturedHttpGet.getValue().getURI(), is(expectedUri));
114+
assertThat(httpGetCaptor.getValue().getURI(), is(expectedUri));
117115
assertThat(geocodeResponse.getGeocodeStatus(), is(ZERO_RESULTS));
118116
assertThat(geocodeResponse.getQueryString(), is("37.422782, -122.085099"));
119117
assertThat(geocodeResponse.getGeocodedAddresses(), is(Collections.<GeocodedAddress>emptyList()));
@@ -122,56 +120,53 @@ public void shouldExecuteAddressLookup() throws Exception {
122120
@Test(expected = GeocodeException.class)
123121
public void shouldThrowExceptionIfHttpProtocolErrorOccurs() throws Exception {
124122
GoogleGeocodeRequest subject = googleGeocoder.newGeocodeRequestBuilder("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA").build();
125-
ClientConnectionManager clientConnectionManager = EasyMock.createMock(ClientConnectionManager.class);
123+
ClientConnectionManager clientConnectionManager = mock(ClientConnectionManager.class);
126124

127-
expect(httpClient.execute(anyObject(HttpGet.class))).andThrow(new ClientProtocolException("test exception"));
128-
expect(httpClient.getConnectionManager()).andReturn(clientConnectionManager);
125+
given(httpClient.execute(any(HttpGet.class))).willThrow(ClientProtocolException.class);
126+
given(httpClient.getConnectionManager()).willReturn(clientConnectionManager);
129127
clientConnectionManager.closeExpiredConnections();
130-
replay(httpClient, clientConnectionManager);
131128

132129
subject.execute();
133130
}
134131

135132
@Test(expected = GeocodeException.class)
136133
public void shouldThrowExceptionIfTheGoogleGeocodeServiceReturnsAnErrorCode() throws Exception {
137134
GoogleGeocodeRequest subject = googleGeocoder.newGeocodeRequestBuilder("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA").build();
138-
HttpResponse httpResponse = EasyMock.createMock(HttpResponse.class);
139-
StatusLine statusLine = EasyMock.createMock(StatusLine.class);
140-
HttpEntity httpEntity = EasyMock.createMock(HttpEntity.class);
141-
ClientConnectionManager clientConnectionManager = EasyMock.createMock(ClientConnectionManager.class);
142-
143-
expect(httpClient.execute(anyObject(HttpGet.class))).andReturn(httpResponse);
144-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
145-
expect(statusLine.getStatusCode()).andReturn(HTTP_FORBIDDEN);
146-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
147-
expect(statusLine.getStatusCode()).andReturn(HTTP_FORBIDDEN);
148-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
149-
expect(statusLine.getReasonPhrase()).andReturn("Forbidden");
150-
expect(httpResponse.getEntity()).andReturn(httpEntity);
151-
expect(httpEntity.getContent()).andReturn(new ByteArrayInputStream("Unable to authenticate the supplied URL. Please check your client and signature parameters.".getBytes()));
152-
expect(httpClient.getConnectionManager()).andReturn(clientConnectionManager);
135+
HttpResponse httpResponse = mock(HttpResponse.class);
136+
StatusLine statusLine = mock(StatusLine.class);
137+
HttpEntity httpEntity = mock(HttpEntity.class);
138+
ClientConnectionManager clientConnectionManager = mock(ClientConnectionManager.class);
139+
140+
given(httpClient.execute(any(HttpGet.class))).willReturn(httpResponse);
141+
given(httpResponse.getStatusLine()).willReturn(statusLine);
142+
given(statusLine.getStatusCode()).willReturn(HTTP_FORBIDDEN);
143+
given(httpResponse.getStatusLine()).willReturn(statusLine);
144+
given(statusLine.getStatusCode()).willReturn(HTTP_FORBIDDEN);
145+
given(httpResponse.getStatusLine()).willReturn(statusLine);
146+
given(statusLine.getReasonPhrase()).willReturn("Forbidden");
147+
given(httpResponse.getEntity()).willReturn(httpEntity);
148+
given(httpEntity.getContent()).willReturn(new ByteArrayInputStream("Unable to authenticate the supplied URL. Please check your client and signature parameters.".getBytes()));
149+
given(httpClient.getConnectionManager()).willReturn(clientConnectionManager);
153150
clientConnectionManager.closeExpiredConnections();
154-
replay(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
155151

156152
subject.execute();
157153
}
158154

159155
@Test(expected = GeocodeException.class)
160156
public void shouldThrowExceptionIfResponseCanNotBeRead() throws Exception {
161157
GoogleGeocodeRequest subject = googleGeocoder.newGeocodeRequestBuilder("1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA").build();
162-
HttpResponse httpResponse = EasyMock.createMock(HttpResponse.class);
163-
StatusLine statusLine = EasyMock.createMock(StatusLine.class);
164-
HttpEntity httpEntity = EasyMock.createMock(HttpEntity.class);
165-
ClientConnectionManager clientConnectionManager = EasyMock.createMock(ClientConnectionManager.class);
166-
167-
expect(httpClient.execute(anyObject(HttpGet.class))).andReturn(httpResponse);
168-
expect(httpResponse.getStatusLine()).andReturn(statusLine);
169-
expect(statusLine.getStatusCode()).andReturn(HTTP_OK);
170-
expect(httpResponse.getEntity()).andReturn(httpEntity);
171-
expect(httpEntity.getContent()).andThrow(new IOException("test exception"));
172-
expect(httpClient.getConnectionManager()).andReturn(clientConnectionManager);
158+
HttpResponse httpResponse = mock(HttpResponse.class);
159+
StatusLine statusLine = mock(StatusLine.class);
160+
HttpEntity httpEntity = mock(HttpEntity.class);
161+
ClientConnectionManager clientConnectionManager = mock(ClientConnectionManager.class);
162+
163+
given(httpClient.execute(any(HttpGet.class))).willReturn(httpResponse);
164+
given(httpResponse.getStatusLine()).willReturn(statusLine);
165+
given(statusLine.getStatusCode()).willReturn(HTTP_OK);
166+
given(httpResponse.getEntity()).willReturn(httpEntity);
167+
given(httpEntity.getContent()).willThrow(IOException.class);
168+
given(httpClient.getConnectionManager()).willReturn(clientConnectionManager);
173169
clientConnectionManager.closeExpiredConnections();
174-
replay(httpClient, httpResponse, statusLine, httpEntity, clientConnectionManager);
175170

176171
subject.execute();
177172
}

0 commit comments

Comments
 (0)