Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Testen Sie Ihren Resolver und Ihre Funktionshandler in AWS AppSync
Sie können den EvaluateCode
API Befehl verwenden, um Ihren Resolver und Funktionshandler aus der Ferne mit gefälschten Daten zu testen, bevor Sie Ihren Code auf einem Resolver oder einer Funktion speichern. Um mit dem Befehl zu beginnen, stellen Sie sicher, dass Sie die appsync:evaluatecode
entsprechende Berechtigung zu Ihrer Richtlinie hinzugefügt haben. Beispielsweise:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appsync:evaluateCode", "Resource": "arn:aws:appsync:<region>:<account>:*" } ] }
Sie können den Befehl nutzen, indem Sie das AWS
CLI
aws appsync evaluate-code \ --code file://code.js \ --function request \ --context file://context.json \ --runtime name=APPSYNC_JS,runtimeVersion=1.0.0
Die Antwort evaluationResult
enthält eine, die die von Ihrem Handler zurückgegebene Nutzlast enthält. Es enthält auch ein logs
Objekt, das die Liste der Protokolle enthält, die von Ihrem Handler während der Auswertung generiert wurden. Auf diese Weise können Sie Ihre Codeausführung einfach debuggen und Informationen zu Ihrer Evaluierung abrufen, um die Fehlerbehebung zu erleichtern. Beispielsweise:
{ "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\"" ] }
Das Evaluationsergebnis kann wie JSON folgt analysiert werden:
{ "operation": "PutItem", "key": { "id": { "S": "record-id" } }, "attributeValues": { "owner": { "S": "John doe" }, "expectedVersion": { "N": 2 }, "authorId": { "S": "Sammy Davis" } } }
Mit dem SDK können Sie ganz einfach Tests aus Ihrer Testsuite integrieren, um das Verhalten Ihres Codes zu überprüfen. Unser Beispiel hier verwendet das Jest Testing FrameworkJSON.parse
um sie JSON aus der Zeichenkettenantwort abzurufen:
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) })
Dies führt zu dem folgenden Ergebnis:
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