首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError: AWS.SecretsManager不是构造函数

TypeError: AWS.SecretsManager不是构造函数
EN

Stack Overflow用户
提问于 2021-08-03 14:31:49
回答 1查看 430关注 0票数 1

我正在尝试测试以下代码片段

代码语言:javascript
复制
import * as AWS from 'aws-sdk';
export const fetchSSMCertKey = async (certKeyArn: string): Promise<string> => {
    const secretsmanager: AWS.SecretsManager = new AWS.SecretsManager();
    const data = await secretsmanager.getSecretValue({ SecretId: certKeyArn }).promise();
    if (!data.SecretString) {
        throw new Error();
    } else {
        return data.SecretString;
    }
};

使用这个滑稽的测试代码

代码语言:javascript
复制
import * as types from '../../../types';
import type { SecretsManager } from 'aws-sdk';
jest.mock('aws-sdk');
describe('fetchSSMCertKey', () => {
    it('returns a value of secret', async () => {
        const secretValue = '---cert---key---value---';
        const mockSecretsManager = ({} as unknown) as SecretsManager;
        const mockPromise = Promise.resolve({ SecretString: secretValue });
        const mockPromiseFunc = jest.fn().mockReturnValue(mockPromise);
        mockSecretsManager.getSecretValue = jest.fn().mockReturnValue({ promise: mockPromiseFunc });
        expect(await types.fetchSSMCertKey('find-me')).toEqual(secretValue);
    });
});

但是我不断地得到错误,运行代码:

代码语言:javascript
复制
Test suite failed to run

    TypeError: AWS.SecretsManager is not a constructor

我的模拟准备缺少的是什么。有没有办法以不同的方式插入SecretManager?

EN

回答 1

Stack Overflow用户

发布于 2022-09-28 16:05:56

aws-sdk使用CommonJS模块系统,因此不能使用*导入(即import * as AWS from 'aws-sdk';)。相反,你应该这样做:

代码语言:javascript
复制
import AWS from 'aws-sdk';

const secretsmanager = new AWS.SecretsManager();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68637988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档