AWS의 Lambda 함수에 매핑되는 API Gateway에 엔드포인트가 있습니다. 엔드포인트의 새로운 핸들러 기능에 대한 테스트 케이스를 작성할 때 spec 파일이 실제 API를 호출하거나 DynamoDB에 연결하는 것을 원하지 않습니다. sinon.stub
을 추가하려고 했지만 여전히 DynamoDB에 대한 연결을 호출하고 테스트 사례가 실패합니다. 스텁이 어디에서 잘못되었는지 찾을 수 없습니다.
handler.js:
으아악
Handler.spec.js:
으아악
오류:
으아악콘솔을 통해 err
객체를 기록했는데 이 오류가 발생하여 DynamoDB에 연결을 시도하는 것 같습니다.
관련: AWS DynamoDB에서 데이터를 반환하는 메서드를 테스트하는 방법
테스트 파일에 선언된
db
- 而不是saveUser
实际使用的db
을 조롱하고 있습니다.해결책은 db 선언을 자체 모듈로 이동하는 것입니다(예: db.js
). 으아악그런 다음
saveUser
模块和测试中导入它 - 这样我们就可以模拟saveUser
使用的同一个db
인스턴스에서.업데이트
다음 코드를 사용하여 테스트를 성공적으로 실행할 수 있었습니다.
테스트 코드:
으아악사용자 핸들러 파일:
으아악패키지.json
으아악출력
파일에 별도의 데이터베이스 연결
데이터베이스 연결을 여러 파일로 분리하여 spec 파일은 물론 핸들러 구현으로 가져올 수 있습니다.
db.js
으아아아yields()
기능스텁은 콜백이 허용하는 매개변수에 대한 링크를 직접 반환
Promise
,而应与.yields()
해서는 안 됩니다. 코드의 다양한 분기를 포괄하도록 매개변수를 변경할 수 있습니다.코드
으아아아유용한 링크
https://www.youtube.com/watch?v=vXDbmrh0xDQ