| 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); |
| } |
| } |