>백엔드 개발 >Golang >go-sqlmock을 사용하여 gorm 문제를 테스트하고 mock.ExpectQuery 및 regexp.QuoteMeta와 쿼리를 비교합니다.

go-sqlmock을 사용하여 gorm 문제를 테스트하고 mock.ExpectQuery 및 regexp.QuoteMeta와 쿼리를 비교합니다.

WBOY
WBOY앞으로
2024-02-11 12:48:08462검색

使用 go-sqlmock 测试 gorm 问题,将查询与mock.ExpectQuery 和 regexp.QuoteMeta 进行比较

개발 과정에서는 go-sqlmock을 사용하여 gorm 문제를 테스트하는 것이 일반적인 요구 사항입니다. go-sqlmock은 데이터베이스 작업을 시뮬레이션하는 도구인 반면 gorm은 널리 사용되는 Go 언어 ORM 라이브러리입니다. 테스트 과정에서 쿼리 문이 기대치를 충족하는지 비교해야 하는 경우가 많습니다. 이를 위해 비교를 위해 mock.ExpectQuery 및 regexp.QuoteMeta를 사용할 수 있습니다. 이 방법을 사용하면 코드를 더 잘 테스트하고 디버깅할 수 있으며 프로그램의 정확성과 안정성을 보장할 수 있습니다. 다음으로 go-sqlmock을 사용하여 gorm 테스트를 하는 방법을 자세히 소개하고, mock.ExpectQuery와 regexp.QuoteMeta를 사용하여 쿼리문을 비교하는 방법을 보여드리겠습니다.

질문 내용

gorm의 실제 쿼리와 예상 쿼리를 비교하는 데 문제가 있습니다. 내 코드는 다음과 같습니다.

으아아아

모듈 도메인은 다음과 같습니다.

으아아아

내가 테스트 중인 기능은 다음과 같습니다.

으아아아

콘솔에서 받은 오류는 다음과 같습니다.

으아아아

이 섹션에는 대신 "select(.*)"를 사용하는 답변이 있지만 제가 읽은 바에 따르면 그것은 실제 해결책이 아닙니다.

해결 방법

제가 이 문제를 해결하도록 도와드리겠습니다. 모든 파일을 다운로드했는데 domain.gorepository.go 괜찮아 보이네요.
그러나 repository_test.go 파일에서 몇 가지 작은 문제를 발견했습니다.

  1. 귀하가 작성한 SQL 쿼리에 백틱이 누락되었습니다
  2. 추가 ;
  3. 쿼리 끝에
  4. withargs(2) 메소드
  5. 에 대한 호출이 누락되었습니다.

이러한 작은 사항을 조정하면 다음과 같은 코드가 생성됩니다.

으아아아

그런 다음 테스트를 실행해 보면 제대로 작동할 것입니다.
문제가 해결되면 알려주세요. 감사합니다!

위 내용은 go-sqlmock을 사용하여 gorm 문제를 테스트하고 mock.ExpectQuery 및 regexp.QuoteMeta와 쿼리를 비교합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제