Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

322
Visualizações
Cómo burlarse del constructor DynamoDBDocumentClient con Jest (AWS SDK V3)

Estoy trabajando con Jest para simular mis servicios de AWS y, más específicamente, DynamoDB y DynamoDBDocumentClient.

Mi código es actualmente similar a este:

 import { DynamoDBClient } from "@aws-sdk/client-dynamodb" import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb" const ddbClient = new DynamoDBClient({}) const ddbDocumentClient = DynamoDBDocumentClient.from(ddbClient, config)

y la especificación de prueba se ve así:

 jest.mock("@aws-sdk/client-dynamodb", () => ({ DynamoDBClient: jest.fn(() => ({ put: (params) => mockAwsResponse("DynamoDBClient", "GetCommand", params), put: (params) => mockAwsResponse("DynamoDBClient", "PutCommand", params), })), })) jest.mock("@aws-sdk/lib-dynamodb", () => ({ DynamoDBDocumentClient: jest.fn(() => ({ get: (params) => console.log("In DynamoDBClient get", params), put: (params) => mockAwsResponse("DynamoDBDocumentClient", "PutCommand", params), from: (params) => mockAwsResponse("DynamoDBDocumentClient", "from", params), })), }))

Desafortunadamente, Jest me devuelve este error: TypeError: lib_dynamodb_1.DynamoDBDocumentClient.from is not a function y creo que es porque me estoy burlando incorrectamente de DynamoDBDocumentClient , ya que su constructor es un método estático.

¡Gracias de antemano por tu ayuda!

EDITAR: Acabo de darme cuenta de que usaba AWS SDK v3 para JavaScript, si eso ayuda.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En su ejemplo, importa sus módulos y ejecuta la llamada a su constructor de inmediato (antes de ingresar cualquier método en su secuencia de comandos), esto significa que el objeto que está tratando de simular debe estar disponible antes de ingresar cualquier método de prueba. Intente colocar sus simulacros antes (y fuera de) sus pruebas de la siguiente manera:

 import { DynamoDBClient } from "@aws-sdk/client-dynamodb" import { DynamoDBDocumentClient } from "@aws-sdk/lib-dynamodb" /* whatever constants you need for your mocks */ jest.mock('@aws-sdk/client-dynamodb', () => { return { DynamoDBClient: jest.fn().mockImplementation(() => { return {}; }), }; }); jest.mock('@aws-sdk/lib-dynamodb', () => { return { DynamoDBDocumentClient: { from: jest.fn().mockImplementation(() => { return { send: jest.fn().mockImplementation((command) => { let res = 'something'; if(command.name == 'GetCommand'){ res = 'something else (a constant from earlier...)'; } /* return whatever needs to be returned... */ return Promise.resolve(res); }), }; }), }, /* Return your other docClient methods here too... */ GetCommand: jest.fn().mockImplementation(() => { return { name: 'GetCommand' }; }), }; }); // then you can implement your tests describe('Endpoint something', () => { it('Should pass or something...', async () => { /* your test here... */ }); });

Ahora sus funciones deberían estar disponibles cuando se necesiten.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda