Utilisation Mockito 2.0.7 pour se moquer des expressions lambda

Je veux simuler une requête fournie sur mon référentiel comme ceci:

@Test
public void GetByEmailSuccessful() {
    //setup mocks
    Mockito.when(this.personRepo.findAll()
            .stream()
            .filter(p -> (p.getEmail().equals(Mockito.any(String.class))))
            .findFirst()
            .get())
            .thenReturn(this.personOut);
    Mockito.when(this.communityUserRepo.findOne(this.communityUserId))
            .thenReturn(this.communityUserOut);
...

Mon @Before méthode ressemble à ceci:

@Before
public void initializeMocks() throws Exception {
    //prepare test data.
    this.PrepareTestData();

    //init mocked repos.
    this.personRepo = Mockito.mock(IPersonRepository.class);
    this.communityUserRepo = Mockito.mock(ICommunityUserRepository.class);
    this.userProfileRepo = Mockito.mock(IUserProfileRepository.class);
}

Malheureusement quand je lance le test, je reçois l'erreur:

java.util.NoSuchElementException: Aucune valeur présente

Quand je double-cliquez sur l'erreur, il de points à la .get() méthode de la première lambda.

N'avez-vous réussi à se moquaient d'une expression lambda et savoir comment je peux résoudre mon problème?

  • J'ai peut-être tort, mais je pense que vous devez spécifier une valeur de retour pour personRepo.findAll() d'abord, et ensuite pour tous les appels de méthode.
  • J'ai la mauvaise impression que vous souhaitez tester mockito au lieu de tester votre code. Quel est le code de getByEmail()? Que doit-elle faire?
InformationsquelleAutor Christoph | 2015-05-06