Je suis à la recherche d' infos sur lambda bien que je ne suis pas en mesure de trouver quelque chose de similaire à la fonction ci - dessous. Il appartient à org.springframework.test.web.servlet.result.JsonPathResultMatchers de classe et ResultMatcher est un @FunctionalInterface, et le résultat est le type MvcResult et jsonPathHelper.doesNotExist de retour void
public ResultMatcher doesNotExist() {
return result -> jsonPathHelper.doesNotExist(getContent(result));
}
Je l'appelle ci-dessus par un
jsonPath("$._embedded" ).doesNotExist()
J'ai littéralement aucune idée sur:
si jsonPathHelper.doesNotExist vide de retour alors pourquoi DoesNotExist retour ResultMatcher.
Classe a quelque chose de semblable à entraîner , où est cet argument venir?
Merci
Le lambda dans votre code:
result -> jsonPathHelper.doesNotExist(getContent(result));
est juste une représentation d'un ResultMatcher
depuis sa une FunctionalInterface
. Vous pouvez le regarder comme si:
public ResultMatcher doesNotExist() {
return new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
jsonPathHelper.doesNotExist(getContent(result)); // returns void
}
};
}
si jsonPathHelper.doesNotExist vide de retour alors pourquoi DoesNotExist retour ResultMatcher
Votre méthode doesNotExist
, retourne juste l'interface fonctionnelle en elle - même, qui peut ensuite être utilisé pour invoquer sa match
fonction. Notez que l' invocation serait également de retour void
.
Classe a quelque chose de semblable au résultat, où est cet argument venir?
Si vous regardez la classe anonyme ci - dessus, avec une représentation lambda le result
devient l'argument de la match
méthode dans la ResultMatcher
mise en œuvre.
Ainsi , lorsque vous souhaitez réellement accéder à cette mise en œuvre (ou ResultMatcher
en général), vous appelez la méthode comme suit (initialisations simplifié):
ResultMatcher resultMatcher = doesNotExist(); // your method returns here
MvcResult result = new MvcResult(); // some MvcResult object
resultMatcher.match(result); // actual invocation