Mockito - Stubbing une méthode d'un objet qui a été renvoyée par un objet fantaisie méthode

Disons que j'ai un objet fantaisie, et je ne veux pas stub l'un de ses méthodes, mais je veux stub une méthode d'un objet auquel il renvoie. Par exemple,

when(mockObject.method1()).thenReturn(returnValue)

est de savoir comment il est fait normalement, mais je suis à la recherche d',

when(mockObject.method1().method2()).thenReturn(returnValue)

Est-ce possible? Je reçois un NullPointerException si je le fais. Actuellement, j'ai stub la première méthode retourne un objet fantaisie, et puis en utilisant renvoyé l'objet fantaisie, talon de la deuxième méthode. Cependant, ces objets fantaisie sont inutiles pour moi et après le chaînage de plusieurs méthodes, que des résultats en beaucoup d'inutiles les objets fantaisie.

EDIT: en Fait, il est possible que le chaînage des œuvres, mais mes objets sont à l'origine de la NPE. Ce code (la première ligne) est à l'origine un NPE:

when(graphDb.index().getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

Mais ce code fonctionne:

IndexManager indexManager = mock(IndexManager.class);
when(graphDb.index()).thenReturn(indexManager);
when(indexManager.getNodeAutoIndexer()).thenReturn(nodeAutoIndexer);
when(graphDb.index().getRelationshipAutoIndexer()).thenReturn(relAutoIndexer);

Donc le chaînage n'a pas fonctionné pour getNodeAutoIndexer() qui retourne un AutoIndexer objet alors qu'il travaillait pour getRelationshipAutoIndexer() qui retourne un RelationshipAutoIndexer. Les deux valeurs de retour sont moqués comme suit:

nodeAutoIndexer = (AutoIndexer<Node>) mock(AutoIndexer.class);
relAutoIndexer = mock(RelationshipAutoIndexer.class);

Alors, quelle pourrait être l'origine du problème?

OriginalL'auteur gsingh2011 | 2011-10-29