jestjs - aws-sdk-mock 是否支持模拟 AWS SSM(参数存储)?

标签 jestjs aws-sdk-nodejs ssm aws-parameter-store aws-sdk-mock

我尝试使用 aws-sdk-mock 和下面的代码来模拟 AWS SSM,但不起作用。不抛出错误,调用 getParametersByPath 时从实际存储中获取值。

我查看了 aws-sdk-mock 文档,但似乎没有模拟 ssm 的示例,是否支持。

AWSMock.mock('SSM', 'getParametersByPath', (params, callback) => {
  callback(null, mockResponse);
});

最佳答案

我在尝试执行类似操作时遇到了此问题:当尝试模拟 SSM 功能时,资源仍在尝试向 AWS 发出请求,并且没有使用模拟功能。

示例:

    import { mock } from 'aws-sdk-mock';
    import { SSM } from 'aws-sdk';
    import { GetParameterRequest, GetParameterResult } from 'aws-sdk/clients/ssm';
    import 'mocha'

    ...
    const ssm: SSM = new SSM();
    mock('SSM', 'getParameter', async (request: GetParameterRequest) => {
        return { Parameter: { Value: 'value' } } as GetParameterResult;
    })

    const request: GetParameterRequest = { Name: 'parameter', WithDecryption: true};

    const result: GetParameterResult = await ssm.getParameter(request).promise();
    expect(result.Parameter.Value).to.equal('value');
    ...

调用getParameter时发生错误。

事实证明,我们错误的原因是我们在声明模拟之前实例化了集成。因此,解决方法是切换执行顺序并在实例化集成之前声明模拟。

示例:

    import { mock } from 'aws-sdk-mock';
    import { SSM } from 'aws-sdk';
    import { GetParameterRequest, GetParameterResult } from 'aws-sdk/clients/ssm';
    import 'mocha'

    ...
    mock('SSM', 'getParameter', async (request: GetParameterRequest) => {
        return { Parameter: { Value: 'value' } } as GetParameterResult;
    });
    // -> Note the following line was moved below the mock declaration.
    const ssm: SSM = new SSM();

    const request: GetParameterRequest = { Name: 'parameter', WithDecryption: true};

    const result: GetParameterResult = await ssm.getParameter(request).promise();
    expect(result.Parameter.Value).to.equal('value');
    ...

关于jestjs - aws-sdk-mock 是否支持模拟 AWS SSM(参数存储)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57271793/

相关文章:

jestjs - Nrwl/Nx jest.preset.js - 如何在配置中使用 projectName 值

node.js - AWS ALB 从 lambda 返回 502 Bad Gateway

python - SSM 向 EC2 实例发送命令失败

amazon-web-services - 在我的 EC2 实例上安装 SSM 代理,以便在没有 SSH 或 key 对的情况下安装 Inspector 代理

amazon-web-services - 如何从 CodePipeline 访问 SSM 参数

javascript - 如何使用 Jest 模拟和测试包装模块函数的方法?

javascript - 开 Jest moduleNameMapper 查找文件 : "resolver": undefined

angular - Okta 登录小部件破坏了 Jest 测试 - TypeError : Cannot read property 'backingStorePixelRatio' of null

node.js - 并发调用 lambda 到 lambda 22 次花费太多时间

node.js - 带有 etags 的 s3 流式传输( Node )