@Test public void testSaveMongoUser() { String[] ids = new String[1]; when(mongoUserDao.save( argThat( new ArgumentMatcher<MongoUser>() { @Override public boolean matches(Object argument) { return argument instanceof MongoUser; } }))) .thenAnswer( new Answer<MongoUser>() { @Override public MongoUser answer(InvocationOnMock invocation) throws Throwable { MongoUser user = invocation.getArgumentAt(0, MongoUser.class); user.setId(ids[0] = UUID.randomUUID().toString()); return user; } }); MongoUser mongoUser = new MongoUser(); mongoUser.setName("test"); MongoUser saved = service.saveMongoUser(mongoUser).toBlocking().first(); Assert.assertNotNull(saved); Assert.assertEquals(mongoUser.getName(), saved.getName()); Assert.assertEquals(ids[0], saved.getId()); }