Sinon은 AWS DynamoDB 연결 호출 시뮬레이션을 구현합니다.
P粉633733146
P粉633733146 2024-03-21 21:36:37
0
2
387

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

handler.js:

으아악

Handler.spec.js:

으아악

오류:

으아악

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

으아악

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

P粉633733146
P粉633733146

모든 응답(2)
P粉714780768

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

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

). 으아악

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

업데이트

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

테스트 코드:

으아악

사용자 핸들러 파일:

으아악

패키지.json

으아악

출력

P粉476046165

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

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

db.js

으아아아

yields()기능

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

코드

으아아아

유용한 링크

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

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿