찾다

 >  Q&A  >  본문

Sinon은 AWS DynamoDB 연결 호출 시뮬레이션을 구현합니다.

AWS의 Lambda 함수에 매핑되는 API Gateway에 엔드포인트가 있습니다. 엔드포인트의 새로운 핸들러 기능에 대한 테스트 케이스를 작성할 때 spec 파일이 실제 API를 호출하거나 DynamoDB에 연결하는 것을 원하지 않습니다. sinon.stub을 추가하려고 했지만 여전히 DynamoDB에 대한 연결을 호출하고 테스트 사례가 실패합니다. 스텁이 어디에서 잘못되었는지 찾을 수 없습니다.

handler.js:

으아악

Handler.spec.js:

으아악

오류:

으아악

콘솔을 통해 err 객체를 기록했는데 이 오류가 발생하여 DynamoDB에 연결을 시도하는 것 같습니다.

으아악

관련: AWS DynamoDB에서 데이터를 반환하는 메서드를 테스트하는 방법

P粉633733146P粉633733146336일 전471

모든 응답(2)나는 대답할 것이다

  • P粉714780768

    P粉7147807682024-03-22 18:19:12

    테스트 파일에 선언된 db - 而不是 saveUser 实际使用的 db을 조롱하고 있습니다.

    해결책은 db 선언을 자체 모듈로 이동하는 것입니다(예: db.js

    ). 으아악

    그런 다음 saveUser 模块和测试中导入它 - 这样我们就可以模拟 saveUser 使用的同一个 db 인스턴스에서.

    업데이트

    다음 코드를 사용하여 테스트를 성공적으로 실행할 수 있었습니다.

    테스트 코드:

    으아악

    사용자 핸들러 파일:

    으아악

    패키지.json

    으아악

    출력

    회신하다
    0
  • P粉476046165

    P粉4760461652024-03-22 16:16:37

    파일에 별도의 데이터베이스 연결

    데이터베이스 연결을 여러 파일로 분리하여 spec 파일은 물론 핸들러 구현으로 가져올 수 있습니다.

    db.js

    으아아아

    yields()기능

    스텁은 콜백이 허용하는 매개변수에 대한 링크를 직접 반환 Promise,而应与 .yields()해서는 안 됩니다. 코드의 다양한 분기를 포괄하도록 매개변수를 변경할 수 있습니다.

    코드

    으아아아

    유용한 링크

    https://www.youtube.com/watch?v=vXDbmrh0xDQ

    회신하다
    0
  • 취소회신하다