Condividi tramite


Simulare le chiamate al servizio Web HttpClient in uscita durante il test

Abilitata per Anteprima pubblica Disponibilità generale
Amministratori, autori, responsabili del marketing o analisti, automaticamente 1 aprile 2025 1 aprile 2025

Valore aziendale

Per consentire una testabilità più semplice del codice AL che chiama i servizi Web in uscita, stiamo introducendo la possibilità di simulare tali chiamate. In questo modo lo sviluppatore può impostare come hardcoded i valori restituiti al codice chiamante durante i test, senza eseguire effettivamente la chiamata al servizio Web in uscita. La possibilità di simulare le chiamate è particolarmente utile quando si testano le funzionalità di Copilot e dell'IA, in quanto gli sviluppatori possono scrivere unit test per queste senza connettersi effettivamente al Servizio OpenAI di Azure, evitando qualsiasi superfluo utilizzo di token. Tieni presente che la funzionalità è limitata solo alle istanze locali, inclusi i contenitori utilizzati per i test automatizzati.

Dettagli sulla funzionalità

Gli sviluppatori di AL possono simulare facilmente le chiamate Get/Put/Delete/Post di HttpClient negli unit test. L'idea è quella di consentire facili sostituzioni delle risposte delle chiamate HttpClient negli unit test introducendo una nuova funzione di gestione per intercettare le chiamate HttpClient.

Quando un oggetto HttpClientHandler viene aggiunto a un metodo di test, ogni richiesta HTTP che si verifica durante l'esecuzione di tale test verrà intercettata e instradata al gestore. La firma del metodo del gestore è la seguente: riceve un TestHttpRequestMessage che contiene informazioni sulla richiesta HTTP, nonché un TestHttpResponseMessage che contiene i valori di risposta HTTP fittizi che devono essere aggiornati dal gestore. Il valore restituito booleano indica se eseguire il fall-through ed eseguire la richiesta HTTP originale (vero) o utilizzare la risposta fittizia (falso).

È stata inoltre introdotta una nuova proprietà sulle codeunit di test denominata TestHttpRequestPolicy. Questa proprietà determina il modo in cui le richieste HTTP in uscita vengono considerate durante l'esecuzione del test e include i seguenti valori possibili:

  • BlockOutboundRequests: qualsiasi richiesta HTTP effettuata durante l'esecuzione del test che non viene rilevata e gestita da un gestore client HTTP genererà un'eccezione.
  • AllowOutboundFromHandler: tutte le richieste HTTP generate durante l'esecuzione del test devono essere intercettate da un gestore client HTTP. Al gestore è consentito eseguire esplicitamente il fallback per inviare la richiesta originale all'endpoint esterno.
  • AllowAllOutboundRequests: sono consentite tutte le richieste HTTP in uscita emesse durante l'esecuzione del test.

Di seguito viene illustrato un esempio di codeunit che effettua una chiamata a un servizio Web esterno, nonché un test codeunit che intercetta e simula questa chiamata. Nota l'uso di HttpClientHandler nel codeunit del test.

Esempio di test case che simula la chiamata al servizio Web esterno utilizzando HttpClientHandler

Esempio di codice che effettua una chiamata Web httpclient esterna che si desidera simulare

Comunicaci la tua opinione

Aiutaci a migliorare Dynamics 365 Business Central condividendo idee fornendo suggerimenti e inviando feedback. Utilizza il forum all'indirizzo https://aka.ms/bcideas.

Risorse aggiuntive

Simulare le chiamate al servizio Web HttpClient in uscita durante il test (documentazione)