package org.mockito.internal.junit; import org.junit.Test; import org.mockito.internal.invocation.InvocationBuilder; import org.mockito.internal.util.SimpleMockitoLogger; import org.mockito.invocation.Invocation; import org.mockitoutil.TestBase; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class StubbingArgMismatchesTest extends TestBase { SimpleMockitoLogger logger = new SimpleMockitoLogger(); StubbingArgMismatches mismatches = new StubbingArgMismatches(); @Test public void no_op_when_no_mismatches() throws Exception { //when mismatches.format("MyTest.myTestMethod", logger); //then assertTrue(logger.isEmpty()); } @Test public void logs_mismatch() throws Exception { //given mismatches.add( new InvocationBuilder().args("a").location("-> at A.java").toInvocation(), new InvocationBuilder().args("b").location("-> at B.java").toInvocation()); //when mismatches.format("MyTest.myTestMethod", logger); //then assertEquals( "[MockitoHint] MyTest.myTestMethod (see javadoc for MockitoHint):\n" + "[MockitoHint] 1. Unused... -> at B.java\n" + "[MockitoHint] ...args ok? -> at A.java\n", logger.getLoggedInfo()); } @Test public void multiple_matching_invocations_per_stub_plus_some_other_invocation() throws Exception { //given Invocation stubbing = new InvocationBuilder().args("a").location("-> at A.java").toInvocation(); mismatches.add(new InvocationBuilder().args("x").location("-> at X.java").toInvocation(), stubbing); mismatches.add(new InvocationBuilder().args("y").location("-> at Y.java").toInvocation(), stubbing); mismatches.add( new InvocationBuilder().method("differentMethod").args("n").location("-> at N.java").toInvocation(), new InvocationBuilder().method("differentMethod").args("m").location("-> at M.java").toInvocation()); //when mismatches.format("MyTest.myTestMethod", logger); //then assertEquals( "[MockitoHint] MyTest.myTestMethod (see javadoc for MockitoHint):\n" + "[MockitoHint] 1. Unused... -> at A.java\n" + "[MockitoHint] ...args ok? -> at X.java\n" + "[MockitoHint] ...args ok? -> at Y.java\n" + "[MockitoHint] 2. Unused... -> at M.java\n" + "[MockitoHint] ...args ok? -> at N.java\n", logger.getLoggedInfo()); } }