>source

AWS-SDK에서 S3를 모듈을 조롱하려고합니다.

내가 일할 수있는 유일한 방법은 다음과 같았습니다.

jest.mock('aws-sdk', ()=> {
  return {
    S3: ()=> ({
      putObject: jest.fn()
    })
  };
});

이슈는 S3 또는 PUTOBJECT에 액세스 할 수없는 모의 변수로 액세스 할 수 없으며 테스트 목적을 위해 호출되는지 확인할 수 있습니다.

그래서 저는 그런 식을하고 싶습니다.

const putObject= jest.fn();
jest.mock('aws-sdk', ()=> {
  return { S3: ()=> ({ putObject }) };
});

나는 항상 다른 모듈을 위해 그것을 위해 그것을 완벽하게 작동하며, 람다는 조차도이 사건에 대해서는 그렇지 않습니다.

나에게 두 개의 code가 정확히 똑같아 보이게되어 정말로 무슨 일이 일어나는지와 정확히 동일한 방식으로 작동하지 않는 이유를 이해하지 못합니다.

콘솔이 테스트하려는 code의 S3를 로그에 로그인하면 다음을받습니다.

​​{putObject : undefined}

또한 Typescript를 사용하여 테스트 파일에서 모듈을 가져오고 모의 변수가 아닌 경우 MockreturnValue를 만 사용할 수 없습니다.

도움을 주셔서 감사합니다!

PutObject를 MockputObject로 바꾸고 싶을 수 있습니까? 초기화되지 않은 변수를 보호하기위한 JEST에 대한 JEST에는 메커니즘이 있으며 조롱 된 모듈에서 사용될 모든 변수를 접두사에 연결해야합니다.

Sirode2021-10-09 17:22:22

code를 보여주고, 최소한의 재현 가능한 예제 생성

slideshowp22021-10-09 17:22:22

@Sirode 시도했는데 일반적인 "s3.putObject가 함수가 아닙니다"라는 메시지가 나타납니다.

Lycaon2021-10-09 17:51:10

@slideshowp2 방금 예제를 추가했습니다. 지연 죄송합니다.

Lycaon2021-10-09 17:51:10

'aws-sdk'에서 가져오기 AWS를 추가해야 합니다. 모듈을 조롱하기 전에.

Sirode2021-10-09 17:51:10
  • 이전 laravel : 간격으로 데이터베이스에서 나이를 분류 할 수있는 방법
  • 다음 HTML 및 JavaScript로 방향성 네트워크 그래프를 만드는 방법?