Ad esempio, di recente ho avuto una dipendenza da un servizio di autorizzazione remoto per convalidare i token di accesso degli utenti. Ma poi ho scritto un servizio che non ha bisogno di autorizzazione - ha appena fatto calcoli. Quindi ho implementato l'interfaccia AuthorizationService (nome modificato per proteggere i servizi innocenti) con un NoAuthorizationService che ha appena restituito true
per validate(token)
.
Potrei usare la stessa interfaccia stub per bloccare le chiamate al servizio di autorizzazione effettivo. Ma l'ho considerato un artefatto di produzione piuttosto che un artefatto di test, perché potrei usarlo per un servizio live da collegare se non volessi disabilitare altrimenti le chiamate a quel servizio.
Pensa a "127.0.0.1", l'IP di loopback - va solo a localhost. È un'idea simile in un'architettura esagonale, in cui le chiamate a un servizio remoto ricorrono invece al servizio locale.
...
Nel più comune gergo Gang Of Four, questo sarebbe il modello Null Object. Oppure un oggetto "sentinella" che prende il posto della cosa reale ma non fa nulla.