typescript - 使用 jest 模拟 AWS.DynamoDB.DocumentClient 的构造函数

标签 typescript amazon-dynamodb jestjs aws-sdk-nodejs ts-jest

我有一个看起来像这样的函数:

function connect() {
   const secret = 'secret';
   const key = 'key';
   const region = 'region';
   const client = new AWS.DynamoDB({
      secret,
      key,
      region
   });'
   return new AWS.DynamoDB.DocumentClient({ service: client })
}

我想测试连接功能。我已经像这样 mock 了 DynamoDB 构造函数:
// See https://stackoverflow.com/questions/47606545/mock-a-dependencys-constructor-jest
jest.mock('aws-sdk', () => {
  const DynamoDB = jest.fn().mockImplementation(() => {
    return {};
  });
  return {
    DynamoDB,
  };
});

然而,这意味着 DocumentClient构造函数失败。我如何 mock 它?

最佳答案

这对我有用:

const mockDynamoDbPut = jest.fn().mockImplementation(() => {
  return {
    promise() {
      return Promise.resolve({});
    }
  };
});

jest.doMock('aws-sdk', () => {
  return {
    DynamoDB: jest.fn(() => ({
      DocumentClient: jest.fn(() => ({
        put: mockDynamoDbPut
      }))
    }))
  };
});

我希望它对你也有帮助。

问候,

大卫。

关于typescript - 使用 jest 模拟 AWS.DynamoDB.DocumentClient 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57811178/

相关文章:

database - 如何获取 DynamoDB 列中的最大数量?

javascript - Jest 在需要 ('react' 时崩溃)

static - typescript 类 : statics and inheritance

当类型定义中使用泛型和条件时,Typescript 不会在 switch 语句中推断类型

c# - 如何在 typescript 中表示 Guid?

amazon-dynamodb - DynamoDB - 通过全局二级索引获取项目

javascript - 在 Typescript/Javascript 中从数组中返回/获取 x 个项目数

amazon-web-services - Boto3 DynamoDB ParamValidationError 插入嵌套对象时

javascript - Jest、env 预设和 stage-0 功能

typescript - 带有模块分辨率的 typescript 的 Jest 设置