Я хочу полностью протестировать этот модуль, код для моей функции приведен ниже
function.js
async function sesSendEmail(message) {
var ses = new aws.SES({ apiVersion: "2020-12-01" });
var params = {
Source: "abc@gmail.com",
Template: "deviceUsageStatisticsEmailTemplate",
Destination: {
ToAddresses: ["xyz@gmail.com"]
},
TemplateData: message,
}
try {
let res = await ses.sendTemplatedEmail(params).promise()
console.log(res)
}
catch (err) {
console.log(err)
}
Что я уже пробовал в своих тестах:
function.test.js
test('should send templated email success', async () => {
jest.spyOn(console, 'log');
const mData = {};
ses.sendTemplatedEmail.mockImplementationOnce(async (params,callback) => {
callback(null,mData)
});
const message = 'mock message';
await index.sesSendEmail(message);
expect(aws.SES).toBeCalledWith({ apiVersion: '2020-12-01' });
expect(ses.sendTemplatedEmail).toBeCalledWith(
{
Source: 'abc@gmail.com',
Template: 'deviceUsageStatisticsEmailTemplate',
Destination: {
ToAddresses: ['xyz@gmail.com'],
},
TemplateData: message,
},
);
await expect(console.log).toBeCalledWith(mData);
});
test('should handle error', () => {
const arb = "network error"
ses.sendTemplatedEmail = jest.fn().mockImplementation(() => {
throw new Error(arb);
})
const message = 'mock message'
expect(() => { index.sesSendEmail(message) }).toThrow(arb);
});
});
ПРОБЛЕМА:
Это дает ошибку
expect(jest.fn()).toBeCalledWith(...expected)
- Expected
+ Received
- Object {}
+ [TypeError: ses.sendTemplatedEmail(...).promise is not a function],
Я пробовал варианты в модельных реализациях, но нет безуспешно .. любая помощь / предложение высоко ценится:)
ОБНОВЛЕНИЕ
Попытка требуется aws-sdk-mock
aws.mock('ses','sendTemplatedEmail',function(callback){callback(null,mData)})
но все равно получаю ошибку
TypeError: Cannot stub non-existent own property ses