Come si esegue il test dell'unità su un microservizio che effettua una chiamata a un altro microservizio?

1

Ho una suite di microservizi:

  • ConnectorRegistrar
  • ConnectorTypeA
  • ConnectorTypeB
  • ...
  • ConnectorTypeZ

"Qualcuno" può effettuare una chiamata al microservizio ConnectorTypeA per creare un connettore di tipo A, ed è necessario sapere che "Qualcuno" è il proprietario di quel connettore.

Quando ConnectorTypeA viene creato, è necessario registrarsi con ConnectorRegistrar.

L'opzione ovvia è avere ConnectorTypeA effettuare una chiamata API a ConnectorRegistrar per far sapere che "Someone" possiede ConnectorTypeA.

Il dilemma che sto affrontando è che non sono sicuro di come testare l'unità.

Quando eseguiamo il test unitario per la creazione di ConnectorTypeA, simulerà una creazione tramite una transazione di database. Ma se la chiamata API sta facendo un'altra chiamata API al servizio di registrazione, anche il Registrar registrerà un record, il che è sbagliato ... poiché il test dell'unità non dovrebbe attivare un record permanente.

Qualcuno può aiutarmi e indicarmi la giusta direzione?

Grazie

    
posta john 15.06.2018 - 02:54
fonte

2 risposte

3

When ConnectorTypeA is created, it needs to register itself with ConnectorRegistrar

Quando viene creato ConnectorTypeA , è necessario fornire un mezzo per registrarsi con qualcos'altro. Ciò che qualcos'altro è di non preoccuparsi di ConnectorTypeA . In altre parole, si registra attraverso un'astrazione iniettata. Quindi, nel tuo test, fornisci una sorta di simulazione di ConnectorRegistrar . Nel codice reale, viene iniettata una vera istanza di ConnectorRegistrar .

    
risposta data 15.06.2018 - 07:57
fonte
4

Stai confondendo il test unitario con i test di integrazione:

Test unitari

Vuoi testare il tuo ConnectorTypeA. Significa che si preoccupa solo dell'output ConnectorTypeA dati determinati input.

Se chiama ConnectorRegistrar durante l'elaborazione dell'input, nel test sarà necessario prendere in giro la risposta HTTP che ConnectorRegistrar restituirà per quel particolare test case.

Test di integrazione

Nel tuo esempio hai citato un database. Questa è un'integrazione tra il servizio e il database. Se questo è ciò che vuoi realmente fare, dovresti attivare un'istanza del tuo servizio ConnectorRegistrar e assicurarti che abbia i dati necessari per restituire ciò che il ConnectorTypeA si aspetta per il suo test case

    
risposta data 15.06.2018 - 03:36
fonte

Leggi altre domande sui tag