Menguji resolver dan penangan fungsi Anda di AWS AppSync - AWS AppSync

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

Menguji resolver dan penangan fungsi Anda di AWS AppSync

Anda dapat menggunakan EvaluateCode API perintah untuk menguji resolver dan penangan fungsi Anda dari jarak jauh dengan data tiruan sebelum menyimpan kode Anda ke resolver atau fungsi. Untuk memulai dengan perintah, pastikan Anda telah menambahkan appsync:evaluatecode izin ke kebijakan Anda. Sebagai contoh:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appsync:evaluateCode", "Resource": "arn:aws:appsync:<region>:<account>:*" } ] }

Anda dapat memanfaatkan perintah dengan menggunakan AWS CLIatau AWS SDKs. Misalnya, untuk menguji kode Anda menggunakanCLI, cukup arahkan ke file Anda, berikan konteks, dan tentukan handler yang ingin Anda evaluasi:

aws appsync evaluate-code \ --code file://code.js \ --function request \ --context file://context.json \ --runtime name=APPSYNC_JS,runtimeVersion=1.0.0

Responsnya evaluationResult berisi muatan yang dikembalikan oleh handler Anda. Ini juga berisi logs objek yang menyimpan daftar log yang dihasilkan oleh handler Anda selama evaluasi. Hal ini memudahkan untuk men-debug eksekusi kode Anda dan melihat informasi tentang evaluasi Anda untuk membantu memecahkan masalah. Sebagai contoh:

{ "evaluationResult": "{\"operation\":\"PutItem\",\"key\":{\"id\":{\"S\":\"record-id\"}},\"attributeValues\":{\"owner\":{\"S\":\"John doe\"},\"expectedVersion\":{\"N\":2},\"authorId\":{\"S\":\"Sammy Davis\"}}}", "logs": [ "INFO - code.js:5:3: \"current id\" \"record-id\"", "INFO - code.js:9:3: \"request evaluated\"" ] }

Hasil evaluasi dapat diuraikan sebagaiJSON, yang memberikan:

{ "operation": "PutItem", "key": { "id": { "S": "record-id" } }, "attributeValues": { "owner": { "S": "John doe" }, "expectedVersion": { "N": 2 }, "authorId": { "S": "Sammy Davis" } } }

Dengan menggunakanSDK, Anda dapat dengan mudah menggabungkan pengujian dari rangkaian pengujian untuk memvalidasi perilaku kode Anda. Contoh kami di sini menggunakan Jest Testing Framework, tetapi rangkaian pengujian apa pun berfungsi. Cuplikan berikut menunjukkan validasi hipotetis berjalan. Perhatikan bahwa kami mengharapkan respons evaluasi validJSON, jadi kami gunakan JSON.parse untuk mengambil JSON dari respons string:

const AWS = require('aws-sdk') const fs = require('fs') const client = new AWS.AppSync({ region: 'us-east-2' }) const runtime = {name:'APPSYNC_JS',runtimeVersion:'1.0.0') test('request correctly calls DynamoDB', async () => { const code = fs.readFileSync('./code.js', 'utf8') const context = fs.readFileSync('./context.json', 'utf8') const contextJSON = JSON.parse(context) const response = await client.evaluateCode({ code, context, runtime, function: 'request' }).promise() const result = JSON.parse(response.evaluationResult) expect(result.key.id.S).toBeDefined() expect(result.attributeValues.firstname.S).toEqual(contextJSON.arguments.firstname) })

Ini menghasilkan hasil sebagai berikut:

Ran all test suites. > jest PASS ./index.test.js ✓ request correctly calls DynamoDB (543 ms) Test Suites: 1 passed, 1 total Tests: 1 passed, 1 total Snapshots: 0 totalTime: 1.511 s, estimated 2 s