Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
File di configurazione per integrazioni di servizi fittizi
Per utilizzare integrazioni di servizi fittizie, devi prima creare un file di configurazione fittizio denominato MockConfigFile.json
contenente le tue configurazioni fittizie. Quindi fornisci a Step Functions Local il file di configurazione fittizio. Questo file di configurazione definisce i casi di test, che contengono stati fittizi che utilizzano risposte simulate di integrazione dei servizi. La sezione seguente contiene informazioni sulla struttura della configurazione fittizia che include gli stati simulati e le risposte simulate:
Argomenti
Introduzione alla struttura della configurazione fittizia
Una configurazione fittizia è un oggetto JSON contenente i seguenti campi di primo livello:
-
StateMachines
- I campi di questo oggetto rappresentano macchine a stati configurate per utilizzare integrazioni di servizi simulate. -
MockedResponse
- I campi di questo oggetto rappresentano risposte simulate per le chiamate di integrazione dei servizi.
Di seguito è riportato un esempio di file di configurazione fittizio che include una StateMachine
definizione eMockedResponse
.
{
"StateMachines":{
"LambdaSQSIntegration":{
"TestCases":{
"HappyPath":{
"LambdaState":"MockedLambdaSuccess",
"SQSState":"MockedSQSSuccess"
},
"RetryPath":{
"LambdaState":"MockedLambdaRetry",
"SQSState":"MockedSQSSuccess"
},
"HybridPath":{
"LambdaState":"MockedLambdaSuccess"
}
}
}
},
"MockedResponses":{
"MockedLambdaSuccess":{
"0":{
"Return":{
"StatusCode":200,
"Payload":{
"StatusCode":200,
"body":"Hello from Lambda!"
}
}
}
},
"LambdaMockedResourceNotReady":{
"0":{
"Throw":{
"Error":"Lambda.ResourceNotReadyException",
"Cause":"Lambda resource is not ready."
}
}
},
"MockedSQSSuccess":{
"0":{
"Return":{
"MD5OfMessageBody":"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51",
"MessageId":"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51"
}
}
},
"MockedLambdaRetry":{
"0":{
"Throw":{
"Error":"Lambda.ResourceNotReadyException",
"Cause":"Lambda resource is not ready."
}
},
"1-2":{
"Throw":{
"Error":"Lambda.TimeoutException",
"Cause":"Lambda timed out."
}
},
"3":{
"Return":{
"StatusCode":200,
"Payload":{
"StatusCode":200,
"body":"Hello from Lambda!"
}
}
}
}
}
}
Riferimento al campo di configurazione fittizia
Le sezioni seguenti spiegano i campi oggetto di primo livello che è necessario definire nella configurazione fittizia.
StateMachines
L'StateMachines
oggetto definisce quali macchine a stati utilizzeranno integrazioni di servizi simulate. La configurazione per ogni macchina a stati è rappresentata come un campo di primo livello diStateMachines
. Il nome del campo è il nome della macchina a stati e il valore è un oggetto contenente un singolo campo denominatoTestCases
, i cui campi rappresentano i casi di test di quella macchina a stati.
La sintassi seguente mostra una macchina a stati con due casi di test:
"MyStateMachine": {
"TestCases": {
"HappyPath": {
...
},
"SadPath": {
...
}
}
TestCases
I campi di TestCases
rappresentano i singoli casi di test per la macchina a stati. Il nome di ogni test case deve essere univoco per macchina a stati e il valore di ogni test case è un oggetto che specifica una risposta simulata da utilizzare per gli stati Task nella macchina a stati.
L'esempio seguente di a TestCase
collega due Task
stati a dueMockedResponses
:
"HappyPath": {
"SomeTaskState": "SomeMockedResponse",
"AnotherTaskState": "AnotherMockedResponse"
}
MockedResponses
MockedResponses
è un oggetto contenente più oggetti di risposta simulati con nomi di campo univoci. Un oggetto di risposta simulato definisce il risultato positivo o l'output di errore per ogni chiamata di uno stato Task simulato. Si specifica il numero di chiamata utilizzando singole stringhe intere, come «0», «1», «2» e «3» o un intervallo inclusivo di numeri interi, come «0-1», «2-3».
Quando si simula un Task, è necessario specificare una risposta simulata per ogni chiamata. Una risposta deve contenere un singolo campo denominato Return
o Throw
il cui valore è il risultato o l'errore di output della falsa chiamata Task. Se non si specifica una risposta fittizia, l'esecuzione della macchina a stati fallirà.
Di seguito è riportato un esempio di Return
oggetti MockedResponse
con Throw
e. In questo esempio, le prime tre volte che viene eseguita la macchina a stati, "0-2"
viene restituita la risposta specificata in e la quarta volta che viene eseguita la macchina a stati, "3"
viene restituita la risposta specificata in.
"SomeMockedResponse": {
"0-2": {
"Throw": {
...
}
},
"3": {
"Return": {
...
}
}
}
Nota
Se utilizzi uno Map
stato e desideri garantire risposte prevedibili per lo Map
stato, imposta il valore su 1. maxConcurrency
Se imposti un valore maggiore di 1, Step Functions Local eseguirà più iterazioni contemporaneamente, il che renderà imprevedibile l'ordine complessivo di esecuzione degli stati tra le iterazioni. Ciò può inoltre far sì che Step Functions Local utilizzi diverse risposte simulate per gli stati di iterazione da un'esecuzione all'altra.
Return
Return
è rappresentato come un campo degli MockedResponse
oggetti. Specifica il risultato positivo di uno stato Task simulato.
Di seguito è riportato un esempio di Return
oggetto che contiene una risposta simulata per la chiamata Invoke
a una funzione Lambda:
"Return": {
"StatusCode": 200,
"Payload": {
"StatusCode": 200,
"body": "Hello from Lambda!"
}
}
Lancia
Throw
è rappresentato come un campo degli MockedResponse
oggetti. Specifica l'output di errore di un'operazione fallita. Il valore di Throw
deve essere un oggetto contenente Cause
campi Error
e con valori di stringa. Inoltre, il valore della stringa specificato nel Error
campo in MockConfigFile.json
deve corrispondere agli errori gestiti nelle Catch
sezioni Retry
e e della macchina a stati.
Di seguito è riportato un esempio di Throw
oggetto che contiene una risposta simulata per la chiamata Invoke
a una funzione Lambda:
"Throw": {
"Error": "Lambda.TimeoutException",
"Cause": "Lambda timed out."
}
Configurazione di integrazioni di servizi fittizie
Puoi simulare qualsiasi integrazione di servizi utilizzando Step Functions Local. Tuttavia, Step Functions Local non impone che i mock siano gli stessi delle API reali. Un Task simulato non chiamerà mai l'endpoint del servizio. Se non si specifica una risposta fittizia, un Task tenterà di chiamare gli endpoint del servizio. Inoltre, Step Functions Local genererà automaticamente un task token quando si simula un task utilizzando il.waitForTaskToken
.