Skip to content

How to mock method reference? #213

@dhoffer

Description

@dhoffer

How would I mock a JDK8 method reference? I want to know that the right method name was passed.

E.g. here is the method to test:

    public void initHandlers(Vertx vertx, OpenAPI3RouterFactory routerFactory) throws SQLException
    {
        super.initHandlers(vertx, routerFactory);

        routerFactory.addHandlerByOperationId(J_TASKER_START_RUN_ID, this::startRun);
        routerFactory.addFailureHandlerByOperationId(J_TASKER_START_RUN_ID, this::validationError);

        routerFactory.addHandlerByOperationId(J_TASKER_CANCEL_RUN_ID, this::cancelRun);
        routerFactory.addFailureHandlerByOperationId(J_TASKER_CANCEL_RUN_ID, this::validationError);

        routerFactory.addHandlerByOperationId(J_TASKER_RUN_STATUS_ID, this::runStatus);
        routerFactory.addFailureHandlerByOperationId(J_TASKER_RUN_STATUS_ID, this::validationError);
    }

Here is my current test but it's missing any real purpose because I can't figure out how to specify the correct method reference.

 @Test
    public void test_initHandlers() throws Exception
    {
        EasyMock.expect(routerFactory.addHandlerByOperationId(EasyMock.eq(J_TASKER_START_RUN_ID), EasyMock.anyObject())).andReturn(routerFactory);
        EasyMock.expect(routerFactory.addFailureHandlerByOperationId(EasyMock.eq(J_TASKER_START_RUN_ID), EasyMock.anyObject())).andReturn(routerFactory);

        EasyMock.expect(routerFactory.addHandlerByOperationId(EasyMock.eq(J_TASKER_CANCEL_RUN_ID), EasyMock.anyObject())).andReturn(routerFactory);
        EasyMock.expect(routerFactory.addFailureHandlerByOperationId(EasyMock.eq(J_TASKER_CANCEL_RUN_ID), EasyMock.anyObject())).andReturn(routerFactory);

        EasyMock.expect(routerFactory.addHandlerByOperationId(EasyMock.eq(J_TASKER_RUN_STATUS_ID), EasyMock.anyObject())).andReturn(routerFactory);
        EasyMock.expect(routerFactory.addFailureHandlerByOperationId(EasyMock.eq(J_TASKER_RUN_STATUS_ID), EasyMock.anyObject())).andReturn(routerFactory);

        replayAll();

        instance.initHandlers(vertx, routerFactory);

        verifyAll();
    }

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions