vendredi 7 avril 2017

how to inject mock without using @injectmocks

I have the following class

public class One {
    private Map<String, String> nodes = new HashMap<String, String>();

    public void addNode(String node, String nodefield){
        this.nodes.put(node, nodefield);
    }
}

I want to write a test class to test the addNode method and have the following:

@RunWith(MockitoJUnitRunner.class)
public class OneTest {
    @InjectMocks
    private One one = new One();

    @Mock
    Map<String, String> nodes;

    @Test
    public void testAddNode(){
        one.addNode("mockNode", "mockNodeField");
        Mockito.verify(nodes).put("mockNode","mockNodeField");
    }
}

which works. But I was wondering if there is a way to do it without using @InjectMocks like the following

public class OneTest {

    private One one;

    @Test
    public void testAddNode(){
        Map<String, String> nodes = Mockito.mock(Map.class);

        one = Mockito.injectmocks(One.class, nodes); // or whatever equivalent methods are

        one.addNode("mockNode", "mockNodeField");
        Mockito.verify(nodes).put("mockNode","mockNodeField");
    }
}

Aucun commentaire:

Enregistrer un commentaire