我正在尝试使用 aws-sdk-mock 和下面的代码来模拟 AWS SSM,但无法正常工作。不抛出错误,getParametersByPath
调用时从实际存储中获取值。
我查看了 aws-sdk-mock 文档,但似乎没有模拟 ssm 的示例,它是否支持。
AWSMock.mock('SSM', 'getParametersByPath', (params, callback) => {
callback(null, mockResponse);
});
我正在尝试使用 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');
...