Tester votre résolveur et vos gestionnaires de fonctions dans AWS AppSync - AWS AppSync

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tester votre résolveur et vos gestionnaires de fonctions dans AWS AppSync

Vous pouvez utiliser la EvaluateCode API commande pour tester à distance votre résolveur et vos gestionnaires de fonctions avec des données simulées avant d'enregistrer votre code dans un résolveur ou une fonction. Pour commencer à utiliser la commande, assurez-vous d'avoir ajouté l'appsync:evaluatecodeautorisation à votre politique. Par exemple :

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

Vous pouvez tirer parti de la commande en utilisant le AWS CLIou AWS SDKs. Par exemple, pour tester votre code à l'aide duCLI, pointez simplement sur votre fichier, fournissez un contexte et spécifiez le gestionnaire que vous souhaitez évaluer :

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

La réponse contient un evaluationResult contenant la charge utile renvoyée par votre gestionnaire. Il contient également un logs objet contenant la liste des journaux générés par votre gestionnaire lors de l'évaluation. Cela permet de déboguer facilement l'exécution de votre code et de consulter les informations relatives à votre évaluation pour vous aider à résoudre le problème. Par exemple :

{ "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\"" ] }

Le résultat de l'évaluation peut être analysé comme JSON suit :

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

À l'aide deSDK, vous pouvez facilement intégrer des tests à partir de votre suite de tests pour valider le comportement de votre code. Notre exemple ici utilise le Jest Testing Framework, mais n'importe quelle suite de tests fonctionne. L'extrait suivant montre une exécution de validation hypothétique. Notez que nous nous attendons à ce que la réponse d'évaluation soit valideJSON. Nous utilisons donc JSON.parse pour récupérer à JSON partir de la chaîne de réponse :

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) })

Cela donne le résultat suivant :

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