Как получить ожидаемую проверку звонков в Manual Mocks in Jest - PullRequest
0 голосов
/ 25 марта 2020

Я использую Ручные издевательства. У меня есть мой класс как

import { S3 } from 'aws-sdk';

export interface S3Client {
  getFile(bucketName: string, fileName: string): Promise<any>;
}

export class S3ClientImpl implements S3Client {
  private s3Client: AWS.S3;

  constructor() {
    this.s3Client = new S3();
  }

  public async getFile(bucketName: string, fileName: string): Promise<any> {
    const params = {
      Bucket: bucketName,
      Key: fileName,
    };
    const s3Response = await this.s3Client.getObject(params).promise();
    if (s3Response && s3Response.Body) {
      console.log(`Could Not Load File : s3://${bucketName}/${fileName}`);
    }
    return s3Response.Body.toString();
  }
}

Я создал mocks и создал класс S3Client.ts как

import {S3} из 'aws -sdk' ;

export interface S3Client {
  getFile(bucketName: string, fileName: string): Promise<any>;
}

export class S3ClientImpl implements S3Client {
  public async getFile(bucketName: string, fileName: string): Promise<any> {
      return JSON.stringify({
        a: 'b',
      });
  }
}

Теперь в моей основной функции index.ts file

export async function start(event: any) {

  // Make S3 calls to fetch URL and identifier
  const x: string = JSON.parse(await s3.getFile('a', 'b'));
  const y: string = JSON.parse(await s3.getFile('a', 'c'));
  }
}

В моем модульном тесте я написал что-то вроде этого.

jest.mock('../src/client/S3Client');

и запустил запуск функции. Тест работает, печатает все. Я хочу проверить, был ли мой s3Client вызываться 2 раза. Как я могу это сделать ?

...