Menggunakan integrasi layanan tiruan untuk pengujian di Step Functions Local - AWS Step Functions

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan integrasi layanan tiruan untuk pengujian di Step Functions Local

Step Functions Lokal tidak didukung

Step Functions Local tidak menyediakan paritas fitur dan tidak didukung.

Anda dapat mempertimbangkan solusi pihak ketiga yang meniru Step Functions untuk tujuan pengujian.

Di Step Functions Local, Anda dapat menguji jalur eksekusi mesin status Anda tanpa benar-benar memanggil layanan terintegrasi dengan menggunakan integrasi layanan tiruan. Untuk mengonfigurasi mesin status Anda agar menggunakan integrasi layanan tiruan, Anda membuat file konfigurasi tiruan. Dalam file ini, Anda mendefinisikan output yang diinginkan dari integrasi layanan Anda sebagai respons yang diejek dan eksekusi yang menggunakan respons tiruan Anda untuk mensimulasikan jalur eksekusi sebagai kasus uji.

Dengan menyediakan file konfigurasi tiruan ke Step Functions Local, Anda dapat menguji panggilan integrasi layanan dengan menjalankan state machine yang menggunakan respons tiruan yang ditentukan dalam kasus pengujian alih-alih membuat panggilan integrasi layanan yang sebenarnya.

catatan

Jika Anda tidak menentukan respons integrasi layanan tiruan dalam file konfigurasi tiruan, Step Functions Local akan memanggil integrasi AWS layanan menggunakan titik akhir yang Anda konfigurasikan saat menyiapkan Step Functions Local. Untuk informasi tentang mengonfigurasi titik akhir untuk Step Functions Local, lihat. Pengaturan Opsi Konfigurasi untuk Step Functions Lokal

Topik ini menggunakan beberapa konsep yang didefinisikan dalam daftar berikut:

  • Integrasi Layanan Mocked - Mengacu pada status Tugas yang dikonfigurasi untuk menggunakan respons yang diejek alih-alih melakukan panggilan layanan yang sebenarnya.

  • Respons Mocked - Mengacu pada data tiruan yang status Tugas dapat dikonfigurasi untuk digunakan.

  • Kasus Uji - Mengacu pada eksekusi mesin status yang dikonfigurasi untuk menggunakan integrasi layanan yang diejek.

  • File Konfigurasi Mock - Mengacu pada file konfigurasi tiruan yang berisiJSON, yang mendefinisikan integrasi layanan tiruan, respons yang diejek, dan kasus uji.

Mengkonfigurasi integrasi layanan yang diejek

Anda dapat mengejek integrasi layanan apa pun menggunakan Step Functions Local. Namun, Step Functions Local tidak memaksakan tiruan menjadi sama dengan aslinya. APIs Tugas yang diejek tidak akan pernah memanggil titik akhir layanan. Jika Anda tidak menentukan respons yang diejek, Tugas akan mencoba memanggil titik akhir layanan. Selain itu, Step Functions Local akan secara otomatis menghasilkan token tugas saat Anda mengejek Task menggunakan. .waitForTaskToken

Langkah 1: Tentukan Integrasi Layanan Mocked dalam File Konfigurasi Mock

Anda dapat menguji Step Functions AWS SDK dan integrasi layanan yang dioptimalkan menggunakan Step Functions Local. Gambar berikut menunjukkan mesin status yang ditentukan dalam tab Definisi mesin Negara:

Contoh integrasi layanan yang diejek.

Untuk melakukan ini, Anda harus membuat file konfigurasi tiruan yang berisi bagian seperti yang didefinisikan dalamStruktur file konfigurasi tiruan.

  1. Buat file bernama MockConfigFile.json untuk mengonfigurasi pengujian dengan integrasi layanan tiruan.

    Contoh berikut menunjukkan file konfigurasi tiruan yang mereferensikan mesin negara dengan dua status yang ditentukan bernama LambdaState dan. SQSState

    Mock configuration file example

    Berikut ini adalah contoh file konfigurasi tiruan yang menunjukkan cara mengejek tanggapan dari menjalankan fungsi Lambda dan mengirim pesan ke Amazon. SQS Dalam contoh ini, mesin LambdaSQSIntegrationnegara berisi tiga kasus uji bernamaHappyPath,RetryPath, dan HybridPath yang mengejek Task status bernama LambdaState danSQSState. Negara-negara bagian ini menggunakanMockedLambdaSuccess,MockedSQSSuccess, dan tanggapan layanan yang MockedLambdaRetry diejek. Respons layanan yang diejek ini didefinisikan di MockedResponses bagian file.

    { "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!" } } } } } }
    State machine definition

    Berikut ini adalah contoh definisi mesin negara yang disebutLambdaSQSIntegration, yang mendefinisikan dua status tugas integrasi layanan bernama LambdaState danSQSState. LambdaStateberisi kebijakan coba lagi berdasarkanStates.ALL.

    { "Comment":"This state machine is called: LambdaSQSIntegration", "StartAt":"LambdaState", "States":{ "LambdaState":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "Payload.$":"$", "FunctionName":"HelloWorldFunction" }, "Retry":[ { "ErrorEquals":[ "States.ALL" ], "IntervalSeconds":2, "MaxAttempts":3, "BackoffRate":2 } ], "Next":"SQSState" }, "SQSState":{ "Type":"Task", "Resource":"arn:aws:states:::sqs:sendMessage", "Parameters":{ "QueueUrl":"https://sqs.us-east-1.amazonaws.com/123456789012/myQueue", "MessageBody.$":"$" }, "End": true } } }

    Anda dapat menjalankan definisi mesin LambdaSQSIntegration status yang direferensikan dalam file konfigurasi tiruan menggunakan salah satu kasus uji berikut:

    • HappyPath- Tes ini mengolok-olok output LambdaState dan SQSState menggunakan MockedLambdaSuccess dan MockedSQSSuccess masing-masing.

      • LambdaStateAkan mengembalikan nilai berikut:

        "0":{ "Return":{ "StatusCode":200, "Payload":{ "StatusCode":200, "body":"Hello from Lambda!" } } }
      • SQSStateAkan mengembalikan nilai berikut:

        "0":{ "Return":{ "MD5OfMessageBody":"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51", "MessageId":"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51" } }
    • RetryPath- Tes ini mengolok-olok output LambdaState dan SQSState menggunakan MockedLambdaRetry dan MockedSQSSuccess masing-masing. Selain itu, LambdaState dikonfigurasi untuk melakukan empat upaya coba lagi. Tanggapan yang diejek untuk upaya ini didefinisikan dan diindeks di negara bagian. MockedLambdaRetry

      • Upaya awal berakhir dengan kegagalan tugas yang berisi pesan penyebab dan kesalahan seperti yang ditunjukkan pada contoh berikut:

        "0":{ "Throw": { "Error": "Lambda.ResourceNotReadyException", "Cause": "Lambda resource is not ready." } }
      • Upaya percobaan ulang pertama dan kedua diakhiri dengan kegagalan tugas yang berisi pesan penyebab dan kesalahan seperti yang ditunjukkan pada contoh berikut:

        "1-2":{ "Throw": { "Error": "Lambda.TimeoutException", "Cause": "Lambda timed out." } }
      • Upaya coba lagi ketiga diakhiri dengan keberhasilan tugas yang berisi hasil status dari bagian Payload dalam respons Lambda yang diejek.

        "3":{ "Return": { "StatusCode": 200, "Payload": { "StatusCode": 200, "body": "Hello from Lambda!" } } }
        catatan
        • Untuk status dengan kebijakan coba lagi, Step Functions Local akan menghabiskan upaya percobaan ulang yang ditetapkan dalam kebijakan hingga menerima respons yang berhasil. Ini berarti bahwa Anda harus menunjukkan ejekan untuk percobaan ulang dengan nomor percobaan berturut-turut dan harus mencakup semua upaya coba lagi sebelum mengembalikan respons yang berhasil.

        • Jika Anda tidak menentukan respons yang diejek untuk upaya coba lagi tertentu, misalnya, coba lagi “3", eksekusi mesin status akan gagal.

    • HybridPath- Tes ini mengolok-olok output dari. LambdaState Setelah berhasil LambdaState berjalan dan menerima data tiruan sebagai respons, SQSState melakukan panggilan layanan aktual ke sumber daya yang ditentukan dalam produksi.

    Untuk informasi tentang cara memulai eksekusi pengujian dengan integrasi layanan tiruan, lihat. Langkah 3: Jalankan Tes Integrasi Layanan Mocked

  2. Pastikan bahwa struktur respons yang diejek sesuai dengan struktur respons layanan aktual yang Anda terima saat Anda melakukan panggilan layanan terintegrasi. Untuk informasi tentang persyaratan struktural untuk tanggapan yang diejek, lihatMengkonfigurasi integrasi layanan yang diejek.

    Dalam contoh file konfigurasi tiruan sebelumnya, respons tiruan didefinisikan MockedLambdaSuccess dan MockedLambdaRetry sesuai dengan struktur respons aktual yang dikembalikan dari panggilan. HelloFromLambda

    penting

    AWS tanggapan layanan dapat bervariasi dalam struktur antara layanan yang berbeda. Step Functions Local tidak memvalidasi jika struktur respons tiruan sesuai dengan struktur respons layanan yang sebenarnya. Anda harus memastikan bahwa tanggapan ejekan Anda sesuai dengan respons aktual sebelum pengujian. Untuk meninjau struktur respons layanan, Anda dapat melakukan panggilan layanan aktual menggunakan Step Functions atau melihat dokumentasi untuk layanan tersebut.

Langkah 2: Berikan File Konfigurasi Mock ke Step Functions Local

Anda dapat menyediakan file konfigurasi tiruan ke Step Functions Local dengan salah satu cara berikut:

Docker
catatan

Jika Anda menggunakan versi Docker dari Step Functions Local, Anda dapat menyediakan file konfigurasi tiruan hanya menggunakan variabel lingkungan. Selain itu, Anda harus memasang file konfigurasi tiruan ke wadah Step Functions Local pada boot-up server awal.

Pasang file konfigurasi tiruan ke direktori apa pun dalam wadah Step Functions Local. Kemudian, atur variabel lingkungan bernama SFN_MOCK_CONFIG yang berisi path ke file konfigurasi tiruan dalam wadah. Metode ini memungkinkan file konfigurasi tiruan diberi nama apa saja selama variabel lingkungan berisi path file dan nama.

Perintah berikut menunjukkan format untuk memulai image Docker.

docker run -p 8083:8083 --mount type=bind,readonly,source={absolute path to mock config file},destination=/home/StepFunctionsLocal/MockConfigFile.json -e SFN_MOCK_CONFIG="/home/StepFunctionsLocal/MockConfigFile.json" amazon/aws-stepfunctions-local

Contoh berikut menggunakan perintah untuk memulai image Docker.

docker run -p 8083:8083 --mount type=bind,readonly,source=/Users/admin/Desktop/workplace/MockConfigFile.json,destination=/home/StepFunctionsLocal/MockConfigFile.json -e SFN_MOCK_CONFIG="/home/StepFunctionsLocal/MockConfigFile.json" amazon/aws-stepfunctions-local
JAR File

Gunakan salah satu cara berikut untuk menyediakan file konfigurasi tiruan ke Step Functions Local:

  • Tempatkan file konfigurasi tiruan di direktori yang sama dengan. Step FunctionsLocal.jar Saat menggunakan metode ini, Anda harus memberi nama file MockConfigFile.json konfigurasi tiruan.

  • Dalam sesi yang menjalankan Step Functions LocalSFN_MOCK_CONFIG, atur variabel lingkungan bernama, ke path lengkap file konfigurasi tiruan. Metode ini memungkinkan file konfigurasi tiruan diberi nama apa saja selama variabel lingkungan berisi path file dan nama. Dalam contoh berikut, SFN_MOCK_CONFIG variabel diatur untuk menunjuk pada file konfigurasi tiruan bernamaEnvSpecifiedMockConfig.json, terletak di /home/workspace direktori.

    export SFN_MOCK_CONFIG="/home/workspace/EnvSpecifiedMockConfig.json"
catatan
  • Jika Anda tidak menyediakan variabel lingkungan SFN_MOCK_CONFIG ke Step Functions Local, secara default, ia akan mencoba membaca file konfigurasi tiruan bernama MockConfigFile.json dalam direktori tempat Anda meluncurkan Step Functions Local.

  • Jika Anda menempatkan file konfigurasi tiruan di direktori yang sama dengan Step FunctionsLocal.jar dan mengatur variabel lingkunganSFN_MOCK_CONFIG, Step Functions Local akan membaca file yang ditentukan oleh variabel lingkungan.

Langkah 3: Jalankan Tes Integrasi Layanan Mocked

Setelah Anda membuat dan menyediakan file konfigurasi tiruan ke Step Functions Local, jalankan state machine yang dikonfigurasi dalam file konfigurasi tiruan menggunakan integrasi layanan tiruan. Kemudian periksa hasil eksekusi menggunakan API tindakan.

  1. Buat mesin status berdasarkan definisi yang disebutkan sebelumnya dalam file konfigurasi tiruan.

    aws stepfunctions create-state-machine \ --endpoint http://localhost:8083 \ --definition "{\"Comment\":\"Thisstatemachineiscalled:LambdaSQSIntegration\",\"StartAt\":\"LambdaState\",\"States\":{\"LambdaState\":{\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::lambda:invoke\",\"Parameters\":{\"Payload.$\":\"$\",\"FunctionName\":\"arn:aws:lambda:us-east-1:123456789012:function:HelloWorldFunction\"},\"Retry\":[{\"ErrorEquals\":[\"States.ALL\"],\"IntervalSeconds\":2,\"MaxAttempts\":3,\"BackoffRate\":2}],\"Next\":\"SQSState\"},\"SQSState\":{\"Type\":\"Task\",\"Resource\":\"arn:aws:states:::sqs:sendMessage\",\"Parameters\":{\"QueueUrl\":\"https://sqs.us-east-1.amazonaws.com/123456789012/myQueue\",\"MessageBody.$\":\"$\"},\"End\":true}}}" \ --name "LambdaSQSIntegration" --role-arn "arn:aws:iam::123456789012:role/service-role/LambdaSQSIntegration"
  2. Jalankan mesin status menggunakan integrasi layanan tiruan.

    Untuk menggunakan file konfigurasi tiruan, lakukan StartExecution API panggilan pada mesin status yang dikonfigurasi dalam file konfigurasi tiruan. Untuk melakukan ini, tambahkan sufiks,#test_name, ke mesin negara yang ARN digunakan oleh. StartExecution test_nameadalah kasus uji, yang dikonfigurasi untuk mesin status dalam file konfigurasi tiruan yang sama.

    Perintah berikut adalah contoh yang menggunakan LambdaSQSIntegration state machine dan konfigurasi tiruan. Dalam contoh ini, mesin LambdaSQSIntegration status dijalankan menggunakan HappyPath pengujian yang didefinisikan dalamLangkah 1: Tentukan Integrasi Layanan Mocked dalam File Konfigurasi Mock. HappyPathPengujian berisi konfigurasi eksekusi untuk menangani panggilan integrasi layanan tiruan yang LambdaState dan SQSState status lakukan menggunakan respons layanan yang diejek MockedLambdaSuccess dan MockedSQSSuccess diejek.

    aws stepfunctions start-execution \ --endpoint http://localhost:8083 \ --name executionWithHappyPathMockedServices \ --state-machine arn:aws:states:us-east-1:123456789012:stateMachine:LambdaSQSIntegration#HappyPath
  3. Lihat respons eksekusi mesin status.

    Respons terhadap panggilan StartExecution menggunakan uji integrasi layanan tiruan sama dengan respons terhadap panggilan StartExecution secara normal, yang mengembalikan eksekusi ARN dan tanggal mulai.

    Berikut ini adalah contoh respons untuk memanggil StartExecution menggunakan uji integrasi layanan tiruan:

    { "startDate":"2022-01-28T15:03:16.981000-05:00", "executionArn":"arn:aws:states:us-east-1:123456789012:execution:LambdaSQSIntegration:executionWithHappyPathMockedServices" }
  4. Periksa hasil eksekusi dengan membuatListExecutions,DescribeExecution, atau GetExecutionHistory API panggilan.

    aws stepfunctions get-execution-history \ --endpoint http://localhost:8083 \ --execution-arn arn:aws:states:us-east-1:123456789012:execution:LambdaSQSIntegration:executionWithHappyPathMockedServices

    Contoh berikut menunjukkan bagian dari respon untuk memanggil GetExecutionHistory menggunakan eksekusi ARN dari contoh respon yang ditunjukkan pada langkah 2. Dalam contoh ini, output dari LambdaState dan SQSState adalah data tiruan yang didefinisikan dalam MockedLambdaSuccess dan MockedSQSSuccess dalam file konfigurasi tiruan. Selain itu, data tiruan digunakan dengan cara yang sama seperti data yang dikembalikan dengan melakukan panggilan integrasi layanan aktual akan digunakan. Juga, dalam contoh ini, output dari LambdaState diteruskan ke SQSState sebagai input.

    { "events": [ ... { "timestamp": "2021-12-02T19:39:48.988000+00:00", "type": "TaskStateEntered", "id": 2, "previousEventId": 0, "stateEnteredEventDetails": { "name": "LambdaState", "input": "{}", "inputDetails": { "truncated": false } } }, ... { "timestamp": "2021-11-25T23:39:10.587000+00:00", "type": "LambdaFunctionSucceeded", "id": 5, "previousEventId": 4, "lambdaFunctionSucceededEventDetails": { "output": "{\"statusCode\":200,\"body\":\"\\\"Hello from Lambda!\\\"\"}", "outputDetails": { "truncated": false } } }, ... "timestamp": "2021-12-02T19:39:49.464000+00:00", "type": "TaskStateEntered", "id": 7, "previousEventId": 6, "stateEnteredEventDetails": { "name": "SQSState", "input": "{\"statusCode\":200,\"body\":\"\\\"Hello from Lambda!\\\"\"}", "inputDetails": { "truncated": false } } }, ... { "timestamp": "2021-11-25T23:39:10.652000+00:00", "type": "TaskSucceeded", "id": 10, "previousEventId": 9, "taskSucceededEventDetails": { "resourceType": "sqs", "resource": "sendMessage", "output": "{\"MD5OfMessageBody\":\"3bcb6e8e-7h85-4375-b0bc-1a59812c6e51\",\"MessageId\":\"3bcb6e8e-8b51-4375-b0bc-1a59812c6e51\"}", "outputDetails": { "truncated": false } } }, ... ] }

File konfigurasi untuk integrasi layanan tiruan di Step Functions

Step Functions Lokal tidak didukung

Step Functions Local tidak menyediakan paritas fitur dan tidak didukung.

Anda dapat mempertimbangkan solusi pihak ketiga yang meniru Step Functions untuk tujuan pengujian.

Untuk menggunakan integrasi layanan tiruan, Anda harus terlebih dahulu membuat file konfigurasi tiruan bernama MockConfigFile.json berisi konfigurasi tiruan Anda. Kemudian berikan Step Functions Local dengan file konfigurasi tiruan. File konfigurasi ini mendefinisikan kasus uji, yang berisi status tiruan yang menggunakan respons integrasi layanan tiruan. Bagian berikut berisi informasi tentang struktur konfigurasi tiruan yang mencakup status tiruan dan tanggapan yang diejek:

Struktur file konfigurasi tiruan

Konfigurasi tiruan adalah JSON objek yang berisi bidang tingkat atas berikut:

  • StateMachines- Bidang objek ini mewakili mesin negara yang dikonfigurasi untuk menggunakan integrasi layanan tiruan.

  • MockedResponse- Bidang objek ini mewakili tanggapan yang diejek untuk panggilan integrasi layanan.

Berikut ini adalah contoh file konfigurasi tiruan yang mencakup StateMachine definisi danMockedResponse.

{ "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!" } } } } } }

Referensi bidang konfigurasi tiruan

Bagian berikut menjelaskan bidang objek tingkat atas yang harus Anda tentukan dalam konfigurasi tiruan Anda.

StateMachines

StateMachinesObjek mendefinisikan mesin negara mana yang akan menggunakan integrasi layanan tiruan. Konfigurasi untuk setiap mesin negara direpresentasikan sebagai bidang tingkat StateMachines atas. Nama bidang adalah nama mesin negara dan nilai adalah objek yang berisi satu bidang bernamaTestCases, yang bidangnya mewakili kasus uji mesin status tersebut.

Sintaks berikut menunjukkan mesin status dengan dua kasus uji:

"MyStateMachine": { "TestCases": { "HappyPath": { ... }, "SadPath": { ... } }
TestCases

Bidang TestCases mewakili kasus uji individu untuk mesin negara. Nama setiap kasus uji harus unik per mesin negara dan nilai setiap kasus uji adalah objek yang menentukan respons tiruan untuk digunakan untuk status Tugas di mesin status.

Contoh berikut dari TestCase link dua Task negara ke duaMockedResponses:

"HappyPath": { "SomeTaskState": "SomeMockedResponse", "AnotherTaskState": "AnotherMockedResponse" }
MockedResponses

MockedResponsesadalah objek yang berisi beberapa objek respons yang diejek dengan nama bidang yang unik. Objek respons yang diejek mendefinisikan hasil yang berhasil atau keluaran kesalahan untuk setiap pemanggilan status Tugas yang diejek. Anda menentukan nomor pemanggilan menggunakan string integer individual, seperti “0", “1", “2", dan “3" atau rentang bilangan bulat inklusif, seperti “0-1", “2-3”.

Saat Anda mengejek Tugas, Anda harus menentukan respons yang diejek untuk setiap pemanggilan. Respons harus berisi satu bidang bernama Return atau Throw yang nilainya adalah hasil atau keluaran kesalahan untuk pemanggilan Tugas yang diejek. Jika Anda tidak menentukan respons yang diejek, eksekusi mesin status akan gagal.

Berikut ini adalah contoh dari MockedResponse dengan Throw dan Return objek. Dalam contoh ini, tiga kali pertama mesin status dijalankan, respons yang "0-2" ditentukan dalam dikembalikan, dan keempat kalinya mesin status berjalan, respons yang "3" ditentukan dalam dikembalikan.

"SomeMockedResponse": { "0-2": { "Throw": { ... } }, "3": { "Return": { ... } } }
catatan

Jika Anda menggunakan Map status, dan ingin memastikan respons yang dapat diprediksi untuk Map status tersebut, tetapkan nilainya maxConcurrency menjadi 1. Jika Anda menetapkan nilai lebih besar dari 1, Step Functions Local akan menjalankan beberapa iterasi secara bersamaan, yang akan menyebabkan urutan eksekusi keseluruhan status di seluruh iterasi menjadi tidak dapat diprediksi. Hal ini selanjutnya dapat menyebabkan Step Functions Local menggunakan respons tiruan yang berbeda untuk status iterasi dari satu eksekusi ke eksekusi berikutnya.

Nilai yang ditampilkan

Returndirepresentasikan sebagai bidang MockedResponse objek. Ini menentukan hasil sukses dari status Tugas yang diejek.

Berikut ini adalah contoh Return objek yang berisi respons ejekan untuk memanggil Invokefungsi Lambda:

"Return": { "StatusCode": 200, "Payload": { "StatusCode": 200, "body": "Hello from Lambda!" } }
Lempar

Throwdirepresentasikan sebagai bidang MockedResponse objek. Ini menentukan output kesalahan dari Tugas gagal. Nilai Throw harus berupa objek yang berisi Error dan Cause bidang dengan nilai string. Selain itu, nilai string yang Anda tentukan di Error bidang di MockConfigFile.json harus cocok dengan kesalahan yang ditangani di Retry dan Catch bagian mesin status Anda.

Berikut ini adalah contoh Throw objek yang berisi respons ejekan untuk memanggil Invokefungsi Lambda:

"Throw": { "Error": "Lambda.TimeoutException", "Cause": "Lambda timed out." }