MessagesManager createMockMessagesManager() { MessagesManager messagesManager = mock(MessagesManager.class); doAnswer(new Answer() { @SuppressWarnings("unchecked") @Override public Object answer(InvocationOnMock invocation) throws Throwable { final List<MessageType> types = (List<MessageType>) invocation.getArguments()[1]; final Map<String, Boolean> sortCriteria = (Map<String, Boolean>) invocation.getArguments()[2]; int limit = (Integer) invocation.getArguments()[3]; int offset = (Integer) invocation.getArguments()[4]; return getMockList(types, sortCriteria).subList(offset, offset + limit); } }).when(messagesManager).getMessageBatch(anyString(), anyListOf(MessageType.class), anyMapOf(String.class, Boolean.class), anyInt(), anyInt()); doAnswer(new Answer() { @Override @SuppressWarnings("unchecked") public Object answer(InvocationOnMock invocation) throws Throwable { return getMockList((List<MessageType>) invocation.getArguments()[1], Collections.<String, Boolean>emptyMap()).size(); } }).when(messagesManager).getMessagesAmount(anyString(), anyListOf(MessageType.class)); return messagesManager; }