sqlmock과 gorm을 사용하여 go 람다 함수에 대한 테스트를 작성하려고 합니다.
테스트하고 싶은 기능은 다음과 같습니다.
으아아아이것은 내 테스트입니다:
으아아아내가 뭘 잘못했는지 모르겠어요. sqlmock을 처음 사용해봤습니다. 일부 장소를 읽었으며 코드가 좋아 보이지만 결과를 얻지 못했습니다. 내 실수는:
으아아아내가 뭘 잘못했는지 아세요?
제가 보기에 가장 큰 문제는 쿼리를 기대하는 방식에 있습니다.
대신 으아아아다음이 있어야 합니다.
으아아아이것은 트랜잭션을 사용하고 있음을 시뮬레이션에 알려줍니다(expectbegin
和 expectcommit
围绕删除),查询是使用参数进行的(withargs
),以及查询的返回结果是什么(willreturnresult
)
테이블 이름(mysql 관용어) 및 테이블 이름 주변에 ``와 같은 몇 가지 미묘한 변경 사항이 있습니다(gorm은 일반적으로 이름을 복수형으로 사용하므로 availability
上实现 tablename
에 있거나 기본적으로 가용성으로 설정됩니다).
이러한 모든 문제를 확인하는 가장 좋은 방법은 오류를 반환하도록 docleanup
변경한 다음 테스트에서 확인하는 것입니다.
이 작업을 수행하고 현재 코드를 사용하면
를 얻을 수 있습니다. 으아아아이는 sqlmock이 시작될 것으로 예상하지 않음을 알려주며, 이를 수정하면 이 답변의 첫 번째 부분에서 해결된 다른 오류를 얻을 수 있습니다.
위 내용은 gorm 및 sqlmock을 사용한 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!