Skip to content

Automatically detect class which is being mocked #282

@rohanlopes20

Description

@rohanlopes20

Currently mock object is created as follows -

Mockery mockery = new Mockery();
DummyInterface dummyInterface = mockery.mock(DummyInterface .class);

This can be created like below as well. We don't have to explicitly provide class name.

Mockery mockery = new Mockery();
DummyInterface dummyInterface = mockery.mock();

This is in reference to pull request mockito/mockito#2779 (comment)

Below code can be added -

   private static <T> Class<T> getClassOf(T[] array) {
        return (Class<T>) array.getClass().getComponentType();
    }

    /**
     * Creates a mock object of type <var>typeToMock</var> and generates a name for it.
     * @param <T> is the class of the mock
     * @param  reified don't pass any values to it. It's a trick to detect the class/interface you want to mock.
     * @return the mock of typeToMock
     */
    public <T> T mock(T... reified) {
        if (reified.length > 0) {
            throw new IllegalArgumentException(
                    "Please don't pass any values here. Java will detect class automagically.");
        }
        return mock(getClassOf(reified));
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions