12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin/* 22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * Copyright (c) 2007 Mockito contributors 32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * This program is made available under the terms of the MIT License. 42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin */ 52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockitousage.stubbing; 62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.assertj.core.api.Assertions.assertThat; 82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.answer; 92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.answerVoid; 102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.returnsArgAt; 112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.returnsFirstArg; 122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.returnsLastArg; 132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.AdditionalAnswers.returnsSecondArg; 142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.any; 152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.anyInt; 162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.anyObject; 172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.anyString; 182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.anyVararg; 192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.eq; 202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.given; 212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.mock; 222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.times; 232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.BDDMockito.verify; 242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.Test; 252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.runner.RunWith; 262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.Mock; 272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.junit.MockitoJUnitRunner; 282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.Answer1; 292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.Answer2; 302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.Answer3; 312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.Answer4; 322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.Answer5; 332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.VoidAnswer1; 342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.VoidAnswer2; 352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.VoidAnswer3; 362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.VoidAnswer4; 372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.stubbing.VoidAnswer5; 382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockitousage.IMethods; 392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin@RunWith(MockitoJUnitRunner.class) 412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class StubbingWithAdditionalAnswersTest { 422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Mock IMethods iMethods; 442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_arguments_of_invocation() throws Exception { 472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.objectArgMethod(anyObject())).will(returnsFirstArg()); 482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.threeArgumentMethod(eq(0), anyObject(), anyString())).will(returnsSecondArg()); 492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.threeArgumentMethod(eq(1), anyObject(), anyString())).will(returnsLastArg()); 502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.objectArgMethod("first")).isEqualTo("first"); 522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.threeArgumentMethod(0, "second", "whatever")).isEqualTo("second"); 532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.threeArgumentMethod(1, "whatever", "last")).isEqualTo("last"); 542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 552637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 562637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 572637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_expanded_arguments_of_invocation() throws Exception { 582637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.varargsObject(eq(1), anyVararg())).will(returnsArgAt(3)); 592637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 602637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.varargsObject(1, "bob", "alexander", "alice", "carl")).isEqualTo("alice"); 612637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 622637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 632637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 642637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_primitives_or_wrappers() throws Exception { 652637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.toIntPrimitive(anyInt())).will(returnsFirstArg()); 662637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.toIntWrapper(anyInt())).will(returnsFirstArg()); 672637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 682637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.toIntPrimitive(1)).isEqualTo(1); 692637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.toIntWrapper(1)).isEqualTo(1); 702637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 712637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 722637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 732637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_based_on_strongly_types_one_parameter_function() throws Exception { 742637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString())) 752637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answer(new Answer1<String, String>() { 762637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String answer(String s) { 772637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return s; 782637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 792637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 802637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 812637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.simpleMethod("string")).isEqualTo("string"); 822637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 832637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 842637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 852637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void will_execute_a_void_based_on_strongly_typed_one_parameter_function() throws Exception { 862637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 872637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 882637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString())) 892637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answerVoid(new VoidAnswer1<String>() { 902637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void answer(String s) { 912637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.simpleMethod(s); 922637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 932637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 942637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 952637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // invoke on iMethods 962637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin iMethods.simpleMethod("string"); 972637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 982637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // expect the answer to write correctly to "target" 992637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).simpleMethod("string"); 1002637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1012637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1022637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1032637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_based_on_strongly_typed_two_parameter_function() throws Exception { 1042637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString(), anyInt())) 1052637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answer(new Answer2<String, String, Integer>() { 1062637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String answer(String s, Integer i) { 1072637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return s + "-" + i; 1082637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1092637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.simpleMethod("string",1)).isEqualTo("string-1"); 1122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void will_execute_a_void_based_on_strongly_typed_two_parameter_function() throws Exception { 1162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 1172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString(), anyInt())) 1192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answerVoid(new VoidAnswer2<String, Integer>() { 1202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void answer(String s, Integer i) { 1212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.simpleMethod(s, i); 1222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // invoke on iMethods 1262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin iMethods.simpleMethod("string",1); 1272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // expect the answer to write correctly to "target" 1292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).simpleMethod("string", 1); 1302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_based_on_strongly_typed_three_parameter_function() throws Exception { 1342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 1352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.threeArgumentMethodWithStrings(anyInt(), anyString(), anyString())) 1362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answer(new Answer3<String, Integer, String, String>() { 1372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String answer(Integer i, String s1, String s2) { 1382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.threeArgumentMethodWithStrings(i, s1, s2); 1392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return "answered"; 1402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.threeArgumentMethodWithStrings(1, "string1", "string2")).isEqualTo("answered"); 1442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).threeArgumentMethodWithStrings(1, "string1", "string2"); 1452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void will_execute_a_void_based_on_strongly_typed_three_parameter_function() throws Exception { 1492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 1502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.threeArgumentMethodWithStrings(anyInt(), anyString(), anyString())) 1522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answerVoid(new VoidAnswer3<Integer, String, String>() { 1532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void answer(Integer i, String s1, String s2) { 1542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.threeArgumentMethodWithStrings(i, s1, s2); 1552637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1562637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1572637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1582637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // invoke on iMethods 1592637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin iMethods.threeArgumentMethodWithStrings(1, "string1", "string2"); 1602637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1612637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // expect the answer to write correctly to "target" 1622637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).threeArgumentMethodWithStrings(1, "string1", "string2"); 1632637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1642637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1652637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1662637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_based_on_strongly_typed_four_parameter_function() throws Exception { 1672637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 1682637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.fourArgumentMethod(anyInt(), anyString(), anyString(), any(boolean[].class))) 1692637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answer(new Answer4<String, Integer, String, String, boolean[]>() { 1702637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String answer(Integer i, String s1, String s2, boolean[] a) { 1712637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.fourArgumentMethod(i, s1, s2, a); 1722637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return "answered"; 1732637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1742637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1752637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1762637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin boolean[] booleanArray = { true, false }; 1772637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.fourArgumentMethod(1, "string1", "string2", booleanArray)).isEqualTo("answered"); 1782637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).fourArgumentMethod(1, "string1", "string2", booleanArray); 1792637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1802637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1812637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 1822637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void will_execute_a_void_based_on_strongly_typed_four_parameter_function() throws Exception { 1832637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 1842637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1852637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.fourArgumentMethod(anyInt(), anyString(), anyString(), any(boolean[].class))) 1862637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answerVoid(new VoidAnswer4<Integer, String, String, boolean[]>() { 1872637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void answer(Integer i, String s1, String s2, boolean[] a) { 1882637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.fourArgumentMethod(i, s1, s2, a); 1892637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1902637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 1912637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1922637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // invoke on iMethods 1932637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin boolean[] booleanArray = { true, false }; 1942637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin iMethods.fourArgumentMethod(1, "string1", "string2", booleanArray); 1952637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 1962637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // expect the answer to write correctly to "target" 1972637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).fourArgumentMethod(1, "string1", "string2", booleanArray); 1982637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 1992637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2002637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 2012637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void can_return_based_on_strongly_typed_five_parameter_function() throws Exception { 2022637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 2032637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString(), anyInt(), anyInt(), anyInt(), anyInt())) 2042637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answer(new Answer5<String, String, Integer, Integer, Integer, Integer>() { 2052637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public String answer(String s1, Integer i1, Integer i2, Integer i3, Integer i4) { 2062637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.simpleMethod(s1, i1, i2, i3, i4); 2072637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return "answered"; 2082637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 2092637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 2102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(iMethods.simpleMethod("hello", 1, 2, 3, 4)).isEqualTo("answered"); 2122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).simpleMethod("hello", 1, 2, 3, 4); 2132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 2142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 2162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void will_execute_a_void_based_on_strongly_typed_five_parameter_function() throws Exception { 2172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin final IMethods target = mock(IMethods.class); 2182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin given(iMethods.simpleMethod(anyString(), anyInt(), anyInt(), anyInt(), anyInt())) 2202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin .will(answerVoid(new VoidAnswer5<String, Integer, Integer, Integer, Integer>() { 2212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void answer(String s1, Integer i1, Integer i2, Integer i3, Integer i4) { 2222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin target.simpleMethod(s1, i1, i2, i3, i4); 2232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 2242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin })); 2252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // invoke on iMethods 2272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin iMethods.simpleMethod("hello", 1, 2, 3, 4); 2282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin // expect the answer to write correctly to "target" 2302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin verify(target, times(1)).simpleMethod("hello", 1, 2, 3, 4); 2312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 2322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 2332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin} 234