как смоделировать aws сервис в юнит-тестах в loopback4 - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу смоделировать 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 может ' не смеются

...