Я хочу смоделировать AWS сервис в модульных тестах, у нас уже есть aws служба, используемая в контроллере, но как сделать фиктивную службу aws и заменить работу фактической службы на макет службы, чтобы получить значения, для которых моя сущность зависит от модульных тестов
async create(entity: Template, options?: Options): Promise<Template> {
await this.businessUnitRepository.findById(entity.businessUnitId);
entity.body = _.unescape(entity.body);
const response = await this.pinpointService
.saveEmailTemplate(
entity.name,
entity.subject,
entity.body,
entity.description ?? '',
)
.catch(error => {
throw error;
});
let key;
try {
key = await this.lambdaService.saveEmailTemplate(
`${entity.name}-v1`,
TemplateService.getPDFContent(entity.subject, entity.body),
);
} catch (LambdaError) {
await this.pinpointService.deleteEmailTemplate(entity.name);
throw LambdaError;
}
try {
if (response.CreateTemplateMessageBody.Arn) {
entity.arn = response.CreateTemplateMessageBody.Arn;
}
if (key) {
entity.key = key;
}
entity.version = '1';
return await this.templateRepository.create(entity, options);
} catch (error) {
if (error.code === DbErrorsEnum.Conflict) {
throw new HttpErrors.Conflict(ErrorKeys.NameAlreadyExist);
}
await this.s3Service.deleteEmailTemplate(key);
await this.pinpointService.deleteEmailTemplate(entity.name);
throw error;
}
}
Функция создания использует 2 AWS сервисов, которые точно определяют и лямбду, которые возвращают ARN и KEY, но как получить эти значения в модульном тестировании, как при тестировании aws может ' не смеются