新手呼叫AWS!我编写了一个函数,它在AWS秘密管理器中创建一个secretID,并将一些令牌值存储到其中。这是我的函数create-secret.ts的片段
import * as AWS from 'aws-sdk';
const secretsManager = new AWS.SecretsManager({
region: process.env.AWS_REGION,
});
// Creates a new secret in the AWS secret manager and stores token value
export const createSecretToken = async (secretId: string,token: string,): Promise<any> ={
const params = {
Description: 'Store token',
Name: secretId,
SecretString: token,
};
try{
const data = await secretsManager.createSecret(params).promise();
return data;
} catch(error){
return error
}
};我从另一个名为“main.ts”的文件调用上述函数。这就是main.ts函数的外观
import {createSecretToken} from './create-secret'
export const handler = async (): Promise<any> => {
const response = await createSecretToken('testSecret', 'testToken');
return {
body: JSON.stringify(response),
};
};所有的逻辑都是完美的。但是,我的单元测试没有涵盖在create-secret.ts文件中的catch块中实现的行。
这是我的测试文件creat-cryp.spec.ts
import * as AWS from 'aws-sdk';
import { createSecretToken } from './create-secret';
const response = {
ARN: 'test',
Name: 'testName',
VersionId: 'XXX',
VersionStages: ['AWSCURRENT'],
};
jest.mock('aws-sdk', () => { <-- I am struggling to modify this mock to cover the
catch block.
return {
config: {
update() {
return {};
},
},
SecretsManager: jest.fn(() => {
return {
createSecret: jest.fn(() => {
return {
promise: () => response,
};
}),
};
}),
};
});
describe('storeSecrets', () => {
it('should create a new secret id in secret manager and store admin token ', async () => {
const spy = jest.spyOn(AWS, 'SecretsManager');
const res = await createSecretToken('test', 'test');
expect(spy).toHaveBeenCalledTimes(1);
expect(res).toEqual(response);
});
});上面的测试通过并覆盖了创建-秘密. test文件中的这个try块
try{
const data = await secretsManager.createSecret(params).promise();
return data;
}如何模拟secretsManager.createSecret函数来模拟错误?请帮助我编写一个额外的测试用例,以覆盖create-secret.ts中的这个catch块
catch(error){
return error
}谢谢
发布于 2022-06-22 14:01:56
我使用symilar来模拟SQS,它还应该与SecretManager一起工作:
const AWS = require('aws-sdk');
const response = {
ARN: 'test',
Name: 'testName',
VersionId: 'XXX',
VersionStages: ['AWSCURRENT'],
};
AWS.SecretsManager = jest.fn().mockImplementation(() => ({
createSecret: jest.fn().mockReturnValue({
promise: jest.fn().mockResolvedValue(response),
})
}));https://stackoverflow.com/questions/72716509
复制相似问题