blob: 5f41d7178ab0c3ee8e0daf61c449e4e10de9357f [file] [log] [blame]
package org.mockitousage.stubbing;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.AdditionalAnswers.delegatesTo;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.withSettings;
public class StubbingWithDelegateVarArgsTest {
public interface Foo {
int bar(String baz, Object... args);
}
private static final class FooImpl implements Foo {
@Override
public int bar(String baz, Object... args) {
return args != null ? args.length : -1; // simple return argument count
}
}
@Test
public void should_not_fail_when_calling_varargs_method() {
Foo foo = mock(Foo.class, withSettings()
.defaultAnswer(delegatesTo(new FooImpl())));
assertThat(foo.bar("baz", 12, "45", 67.8)).isEqualTo(3);
}
@Test
public void should_not_fail_when_calling_varargs_method_without_arguments() {
Foo foo = mock(Foo.class, withSettings()
.defaultAnswer(delegatesTo(new FooImpl())));
assertThat(foo.bar("baz")).isEqualTo(0);
assertThat(foo.bar("baz", new Object[0])).isEqualTo(0);
}
@Test
public void should_not_fail_when_calling_varargs_method_with_null_argument() {
Foo foo = mock(Foo.class, withSettings()
.defaultAnswer(delegatesTo(new FooImpl())));
assertThat(foo.bar("baz", (Object[]) null)).isEqualTo(-1);
}
}