Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Testando e depurando resolvedores em () AWS AppSync JavaScript

Modo de foco
Testando e depurando resolvedores em () AWS AppSync JavaScript - AWS AppSync GraphQL

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS AppSync executa resolvedores em um campo GraphQL em relação a uma fonte de dados. Ao trabalhar com resolvedores de pipeline, as funções interagem com suas fontes de dados. Conforme descrito na visão geral dos JavaScript resolvedores, as funções se comunicam com as fontes de dados usando manipuladores de solicitação e resposta gravados JavaScript e executados no APPSYNC_JS tempo de execução. Isso permite fornecer lógica e condições personalizadas antes e depois da comunicação com a fonte de dados.

Para ajudar os desenvolvedores a escrever, testar e depurar esses resolvedores, o AWS AppSync console também fornece ferramentas para criar uma solicitação e uma resposta do GraphQL com dados simulados até o resolvedor de campo individual. Além disso, você pode realizar consultas, mutações e assinaturas no AWS AppSync console e ver um fluxo de log detalhado de toda a solicitação da Amazon. CloudWatch Isso inclui resultados da fonte de dados.

Testes com dados simulados

Quando um resolvedor do GraphQL é invocado, ele contém um objeto context que contém informações relevantes sobre a solicitação. Isso inclui argumentos de um cliente, informações de identidade e dados do campo pai do GraphQL. Ele também armazena os resultados da fonte de dados, que podem ser usados no manipulador de respostas. Para obter mais informações sobre essa estrutura e os utilitários auxiliares disponíveis para usar durante a programação, consulte a Referência do objeto de contexto do resolvedor.

Ao escrever ou editar uma função de resolução, você pode passar um objeto de contexto simulado ou de teste para o editor do console. Isso permite que você veja como os manipuladores de solicitação e de resposta são avaliados sem realmente serem executados em uma fonte de dados. Por exemplo, você pode enviar um argumento firstname: Shaggy de teste e ver como ele avalia ao usar ctx.args.firstname no código do modelo. Você também pode testar a avaliação de qualquer utilitário auxiliar, como util.autoId() ou util.time.nowISO8601().

Teste de resolvedores

Este exemplo usará o AWS AppSync console para testar os resolvedores.

  1. Faça login no AWS Management Console e abra o AppSyncconsole.

    1. No APIs painel, escolha sua API GraphQL.

    2. Na Barra lateral, escolha Funções.

  2. Escolha uma função existente.

  3. Na parte superior da página Atualizar função, escolha Selecionar contexto de teste e, em seguida, escolha Criar novo contexto.

  4. Selecione um objeto de contexto de amostra ou preencha o JSON manualmente na janela Configurar contexto de teste.

  5. Insira um nome de contexto de texto.

  6. Clique no botão Salvar.

  7. Para avaliar o resolvedor usando esse objeto de contexto simulado, escolha Executar teste.

Como exemplo mais prático, digamos que você tenha um aplicativo que armazena um tipo do GraphQL Dog que usa a geração automática de ID para objetos e os armazena no Amazon DynamoDB. Você também deseja gravar alguns valores dos argumentos de uma mutação do GraphQL e permitir que apenas usuários específicos vejam uma resposta. O trecho a seguir mostra a aparência do esquema:

type Dog { breed: String color: String } type Mutation { addDog(firstname: String, age: Int): Dog }

Você pode escrever uma AWS AppSync função e adicioná-la ao seu addDog resolvedor para lidar com a mutação. Para testar sua AWS AppSync função, você pode preencher um objeto de contexto, como no exemplo a seguir. Ele tem argumentos do cliente de name e age, e um username preenchido no objeto identity:

{ "arguments" : { "firstname": "Shaggy", "age": 4 }, "source" : {}, "result" : { "breed" : "Miniature Schnauzer", "color" : "black_grey" }, "identity": { "sub" : "uuid", "issuer" : " https://cognito-idp.{region}.amazonaws.com/{userPoolId}", "username" : "Nadia", "claims" : { }, "sourceIp" :[ "x.x.x.x" ], "defaultAuthStrategy" : "ALLOW" } }

Você pode testar sua AWS AppSync função usando o seguinte código:

import { util } from '@aws-appsync/utils'; export function request(ctx) { return { operation: 'PutItem', key: util.dynamodb.toMapValues({ id: util.autoId() }), attributeValues: util.dynamodb.toMapValues(ctx.args), }; } export function response(ctx) { if (ctx.identity.username === 'Nadia') { console.log("This request is allowed") return ctx.result; } util.unauthorized(); }

O manipulador de solicitação e resposta avaliado possui os dados do objeto de contexto de teste e o valor gerado de util.autoId(). Além disso, se você alterasse o username para um valor diferente de Nadia, os resultados não seriam retornados pois a verificação de autorização falharia. Para obter mais informações sobre o controle de acesso refinado, consulte Casos de uso de autorização.

Testando manipuladores de solicitações e respostas com's AWS AppSync APIs

Você pode usar o comando API do EvaluateCode para testar remotamente seu código com dados simulados. Para começar a usar o comando, certifique-se de ter adicionado a permissão appsync:evaluateMappingCode à sua política. Por exemplo:

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

Você pode aproveitar o comando usando o AWS CLIou AWS SDKs. Por exemplo, veja o Dog esquema e seus manipuladores de solicitação e resposta de AWS AppSync função da seção anterior. Usando a CLI em sua estação local, salve o código em um arquivo chamado code.js e salve o objeto context em um arquivo chamado context.json. No seu shell, execute o seguinte comando:

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

A resposta tem um evaluationResult contendo a carga retornada pelo seu manipulador. Também contém um objeto logs que contém a lista de logs que foram gerados pelo seu manipulador durante a avaliação. Isso facilita a depuração da execução do código e a visualização de informações sobre sua avaliação para ajudar na solução de problemas. Por exemplo:

{ "evaluationResult": "{\"breed\":\"Miniature Schnauzer\",\"color\":\"black_grey\"}", "logs": [ "INFO - code.js:13:5: \"This request is allowed\"" ] }

O evaluationResult pode ser analisado como JSON, que fornece:

{ "breed": "Miniature Schnauzer", "color": "black_grey" }

Usando o SDK, você pode incorporar facilmente testes do seu conjunto de testes favorito para validar o comportamento dos seus manipuladores. Recomendamos a criação de testes usando o Estrutura de trabalho de teste Jest, mas qualquer conjunto de testes funciona. O trecho a seguir mostra uma execução de validação hipotética. Esperamos que a resposta de avaliação seja um JSON válido, por isso, usamos JSON.parse para recuperar o JSON da resposta da 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) })

Isso produz o seguinte resultado:

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

Depuração de uma consulta atual

Não há substituto para um end-to-end teste e um registro para depurar um aplicativo de produção. AWS AppSync permite que você registre erros e detalhes completos da solicitação usando a Amazon CloudWatch. Além disso, você pode usar o AWS AppSync console para testar consultas, mutações e assinaturas do GraphQL e transmitir ao vivo os dados de log de cada solicitação de volta ao editor de consultas para depuração em tempo real. Para assinaturas, os logs exibem as informações do tempo de conexão.

Para fazer isso, você precisa ter CloudWatch os registros da Amazon habilitados com antecedência, conforme descrito em Monitoramento e registro. Em seguida, no AWS AppSync console, escolha a guia Consultas e insira uma consulta GraphQL válida. Na seção inferior direita, clique e arraste a janela Registros em log para abrir a visualização de registros. No topo da página, escolha o ícone de seta de reprodução para executar a consulta do GraphQL. Em alguns instantes, os logs completos da solicitação e da resposta para a operação serão transmitidos para essa seção e você poderá visualizá-los no console.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.