PHP 편집자 Xinyi가 Gorm 삭제 절 sqlmock 테스트를 소개합니다. Gorm은 Go 언어의 뛰어난 ORM 프레임워크이고 sqlmock은 데이터베이스 작업을 시뮬레이션하는 데 사용되는 Gorm용 테스트 도구입니다. Gorm을 개발할 때 데이터베이스 삭제 작업을 테스트해야 하는 경우가 종종 있습니다. 이때 sqlmock을 사용하여 단위 테스트 및 통합 테스트를 위한 데이터베이스 삭제 작업을 시뮬레이션할 수 있습니다. 이 기사에서는 Gorm 및 sqlmock을 사용하여 삭제 절을 테스트하는 방법을 자세히 소개하여 데이터베이스 관련 개발 작업을 더 잘 수행하는 데 도움을 줍니다.
gorm 삭제가 있는데 반환 결과는 다음과 같습니다.
으아악절이 포함된 테스트는 이제 항상 실패합니다. 예:
으아악수신 오류:
"매개변수 [{name: ordinal:1 value:2023-01-18 06:15:34.694274 +0000 utc}]를 사용하여 Created_at < $1이 "email"을 반환하는 "my_users"에서 삭제 쿼리를 호출하는 것은 예상되지 않습니다. 다음 예상은 다음과 같습니다. Expectexec => exec 또는 execcontext를 예상합니다. 여기서: n - sql과 일치: 'delete'n - 인수 사용: n 0 - 2023-01-18 06:15:34.694274 +0000 utc n - 결과를 반환해야 합니다. 대상: n lastinsertid: 1n행 영향을 받음: 1"
다른 많은 sqlmock 기대치를 시도했지만 비슷한 문제가 있었습니다. 또한, Expectexec에는 반환 값이 없고, Expectquery에만 반환 값이 있습니다... 절을 사용하여 Gorm 쿼리를 테스트해야 하는 사람이 있나요?
귀하의 요구사항을 성공적으로 관리할 수 있었습니다. 먼저 제가 작성한 파일을 공유한 다음 관련 변경 사항을 모두 안내해 드리겠습니다. 이 파일은 프로덕션 용도로 사용됩니다 repo.go
和用于测试代码的 repo_test.go
.
repo.go
전체 파일을 제공하지 않으셔서 무엇이 누락된 것인지 추측해 보았습니다.
repo_test.go
언급할 만한 추가 변경 사항은 다음과 같습니다.
anytime
인스턴스화했습니다(댓글에서 링크를 볼 수 있습니다). db
、mock
和 gormdb
의 설정을 추측했지만 거의 동일해야 한다고 생각합니다. clauses
파일의 expectexec
的用法切换为 expectquery
,因为我们将返回 clauses
文件中 repo.go
메소드에 의해 지정된 결과 세트를 반환하기 때문에 expectexec
의 사용법을 expectquery
로 전환했습니다. expectquery
包装在 expectbegin
和 expectcommit
를 꼭 넣어주셔야 합니다. ?
或
。但在测试代码中,只能使用?
를 사용할 수 있는 옵션이 있습니다. 그렇지 않으면 예상대로 작동하지 않습니다. 도움이 되었으면 좋겠습니다. 그렇지 않다면 알려주세요!
위 내용은 Gorm 삭제 절 sqlmock 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!