@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());
  }