Skip to content

Commit

Permalink
Merge pull request #2736 from mockito/static-varargs-call
Browse files Browse the repository at this point in the history
Drop varargs collector before invoking a user method.
  • Loading branch information
raphw committed Aug 22, 2022
2 parents e123c2c + 160e3da commit 9b93df7
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
Expand Up @@ -235,6 +235,9 @@ public Object invoke(Method method, Object target, Object... arguments)
if (!Modifier.isStatic(method.getModifiers())) {
handle = handle.bindTo(target);
}
if (handle.isVarargsCollector()) {
handle = handle.asFixedArity();
}
try {
return DISPATCHER.invokeWithArguments(handle, arguments);
} catch (Throwable t) {
Expand Down
Expand Up @@ -212,6 +212,15 @@ public void testStaticMockMustUseValidMatchers() {
}
}

@Test
public void testStaticMockVarargs() {
assertEquals("foobar", Dummy.fooVarargs("foo", "bar"));
try (MockedStatic<Dummy> ignored = Mockito.mockStatic(Dummy.class)) {
assertNull(Dummy.fooVarargs("foo", "bar"));
}
assertEquals("foobar", Dummy.fooVarargs("foo", "bar"));
}

static class Dummy {

static String var1 = null;
Expand All @@ -227,5 +236,13 @@ static void fooVoid(String var2) {
static void fooVoid(String var2, String var3) {
var1 = var2;
}

static String fooVarargs(String... args) {
StringBuilder sb = new StringBuilder();
for (String arg : args) {
sb.append(arg);
}
return sb.toString();
}
}
}

0 comments on commit 9b93df7

Please sign in to comment.