Skip to content

Commit eb067d8

Browse files
pavel-ptashytscodex
andcommitted
Make default response test portable
Mockito 4 cannot invoke interface default methods through CALLS_REAL_METHODS on JDK 21 and newer. Invoke the Response default method explicitly so delegation remains covered on every supported JDK. Refs #2321 Codex on behalf of Pavel Ptashyts Co-Authored-By: OpenAI Codex <noreply@openai.com>
1 parent f0821dd commit eb067d8

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

‎client/src/test/java/org/asynchttpclient/netty/NettyAsyncResponseTest.java‎

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
import java.io.IOException;
2626
import java.io.OutputStream;
27+
import java.lang.invoke.MethodHandles;
28+
import java.lang.invoke.MethodType;
2729
import java.nio.charset.StandardCharsets;
2830
import java.text.SimpleDateFormat;
2931
import java.util.Date;
@@ -38,9 +40,8 @@
3840
import static org.junit.jupiter.api.Assertions.assertNotSame;
3941
import static org.junit.jupiter.api.Assertions.assertSame;
4042
import static org.junit.jupiter.api.Assertions.assertTrue;
41-
import static org.mockito.Mockito.CALLS_REAL_METHODS;
42-
import static org.mockito.Mockito.doReturn;
4343
import static org.mockito.Mockito.mock;
44+
import static org.mockito.Mockito.when;
4445

4546
public class NettyAsyncResponseTest {
4647

@@ -210,12 +211,17 @@ public void testGetResponseBodyAsBytesViewReturnsEmptyArray() {
210211
}
211212

212213
@Test
213-
public void testGetResponseBodyAsBytesViewDefaultImplementationDelegates() {
214+
public void testGetResponseBodyAsBytesViewDefaultImplementationDelegates() throws Throwable {
214215
byte[] expected = "Hello World".getBytes(StandardCharsets.UTF_8);
215-
Response response = mock(Response.class, CALLS_REAL_METHODS);
216-
doReturn(expected).when(response).getResponseBodyAsBytes();
216+
Response response = mock(Response.class);
217+
when(response.getResponseBodyAsBytes()).thenReturn(expected);
217218

218-
assertSame(expected, response.getResponseBodyAsBytesView());
219+
byte[] actual = (byte[]) MethodHandles.privateLookupIn(Response.class, MethodHandles.lookup())
220+
.findSpecial(Response.class, "getResponseBodyAsBytesView", MethodType.methodType(byte[].class), Response.class)
221+
.bindTo(response)
222+
.invokeExact();
223+
224+
assertSame(expected, actual);
219225
}
220226

221227
@Test

0 commit comments

Comments
 (0)