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 commande EvaluateCode API 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 :
Vous pouvez tirer parti de la commande à l'aide de l'AWS
interface de ligne de commande
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 faciliter le dépannage. 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é au format JSON, ce qui donne :
{ "operation": "PutItem", "key": { "id": { "S": "record-id" } }, "attributeValues": { "owner": { "S": "John doe" }, "expectedVersion": { "N": 2 }, "authorId": { "S": "Sammy Davis" } } }
À l'aide du SDK, vous pouvez facilement intégrer des tests de votre suite de tests pour valider le comportement de votre code. Notre exemple utilise le Jest Testing FrameworkJSON.parse pour récupérer le 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