Home | History | Annotate | Download | only in debugging
      1 package org.mockitousage.debugging;
      2 
      3 import org.junit.Assert;
      4 import org.junit.Test;
      5 import org.mockito.Mock;
      6 import org.mockito.internal.debugging.InvocationsPrinter;
      7 import org.mockitousage.IMethods;
      8 import org.mockitoutil.TestBase;
      9 
     10 import static org.assertj.core.api.Assertions.assertThat;
     11 import static org.mockito.Mockito.when;
     12 
     13 public class InvocationsPrinterTest extends TestBase {
     14 
     15     @Mock IMethods mock;
     16 
     17     @Test public void no_invocations() {
     18         assertThat(new InvocationsPrinter().printInvocations(mock)).isEqualTo("No interactions and stubbings found for mock: mock");
     19     }
     20 
     21     @Test public void prints_invocations() {
     22         mock.simpleMethod(100);
     23         triggerInteraction();
     24 
     25         assertThat(filterLineNo(new InvocationsPrinter().printInvocations(mock)))
     26                 .isEqualTo(filterLineNo("[Mockito] Interactions of: mock\n" +
     27                         " 1. mock.simpleMethod(100);\n" +
     28                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.prints_invocations(InvocationsPrinterTest.java:0)\n" +
     29                         " 2. mock.otherMethod();\n" +
     30                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerInteraction(InvocationsPrinterTest.java:0)\n"));
     31     }
     32 
     33     @Test public void prints_stubbings() {
     34         triggerStubbing();
     35 
     36         assertThat(filterLineNo(new InvocationsPrinter().printInvocations(mock)))
     37                 .isEqualTo(filterLineNo("[Mockito] Unused stubbings of: mock\n" +
     38                         " 1. mock.simpleMethod(\"a\");\n" +
     39                         "  - stubbed -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerStubbing(InvocationsPrinterTest.java:70)\n"));
     40     }
     41 
     42     @Test public void prints_invocations_and_stubbings() {
     43         triggerStubbing();
     44 
     45         mock.simpleMethod("a");
     46         triggerInteraction();
     47 
     48         assertThat(filterLineNo(new InvocationsPrinter().printInvocations(mock)))
     49                 .isEqualTo(filterLineNo("[Mockito] Interactions of: mock\n" +
     50                         " 1. mock.simpleMethod(\"a\");\n" +
     51                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.prints_invocations_and_stubbings(InvocationsPrinterTest.java:49)\n" +
     52                         "   - stubbed -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerStubbing(InvocationsPrinterTest.java:73)\n" +
     53                         " 2. mock.otherMethod();\n" +
     54                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerInteraction(InvocationsPrinterTest.java:34)\n"));
     55     }
     56 
     57     @Test public void prints_invocations_and_unused_stubbings() {
     58         triggerStubbing();
     59 
     60         mock.simpleMethod("b");
     61         triggerInteraction();
     62 
     63         assertThat(filterLineNo(new InvocationsPrinter().printInvocations(mock)))
     64                 .isEqualTo(filterLineNo("[Mockito] Interactions of: mock\n" +
     65                         " 1. mock.simpleMethod(\"b\");\n" +
     66                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.prints_invocations_and_unused_stubbings(InvocationsPrinterTest.java:55)\n" +
     67                         " 2. mock.otherMethod();\n" +
     68                         "  -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerInteraction(InvocationsPrinterTest.java:34)\n" +
     69                         "[Mockito] Unused stubbings of: mock\n" +
     70                         " 1. mock.simpleMethod(\"a\");\n" +
     71                         "  - stubbed -> at org.mockitousage.debugging.InvocationsPrinterTest.triggerStubbing(InvocationsPrinterTest.java:62)\n"));
     72     }
     73 
     74     private void triggerInteraction() {
     75         mock.otherMethod();
     76     }
     77 
     78     private void triggerStubbing() {
     79         when(mock.simpleMethod("a")).thenReturn("x");
     80     }
     81 }
     82