이 기사에서는 PHP 편집기 Xiaoxin이 Go 언어로 단위 테스트를 작성할 때 발생하는 일반적인 오류, 즉 어설션 오류를 소개합니다. 단위 테스트를 작성할 때 반환 값을 결정할 수 없는 상황이 발생하는 경우가 있는데, 이로 인해 예기치 않은 메서드 호출 오류가 발생할 수 있습니다. 이 기사에서는 어설션 오류를 더 잘 처리하고 단위 테스트의 정확성과 신뢰성을 보장하는 데 도움이 되는 이 문제의 원인과 해결 방법에 대해 논의합니다.
go에서 testify
를 사용하여 내 서비스 메서드에 대한 단위 테스트를 작성하고 있는데 업데이트 메서드를 제외한 모든 메서드가 잘 작동합니다. 업데이트 메서드에서는 업데이트 메서드에서 동일한 서비스의 다른 메서드를 호출하기 때문입니다(" getbyid") .
내 서비스에 업데이트 방법 구현:
으아악mockrepo 업데이트 방법:
으아악테스트 구현:
으아악이제 테스트를 실행하면 다음 오류가 발생합니다.
으아악테스트 함수 구현에서 mock.on("getbyid")
호출 전후에 .on("update")
호출을 시도했지만 작동하지 않고 또한 mockrepo 업데이트 기능을 수정했지만 작동하지 않았습니다. .on("update")
之前和之后调用 mock.on("getbyid")
,但它不起作用,而且我还修改了mockrepo update函数,但它没用。
让我尝试帮助您解决问题。我通过一些简化复制了该存储库,只是为了发布相关代码。如果我在您的解决方案中没有错,有一个服务(teamservice
)调用底层包(teamrepo
)提供的一些方法。您想测试 teamservice
结构的 update
repo/repo.go
문제 해결을 도와드리겠습니다. 관련 코드를 게시하기 위해 몇 가지 단순화를 통해 저장소를 복사했습니다. 귀하의 솔루션이 틀리지 않다면 기본 패키지(teamrepo
)에서 제공하는 일부 메서드를 호출하는 서비스(teamservice
)가 있습니다. teamservice
구조의 update
메서드를 테스트하려고 합니다. 검토한 후 먼저 코드를 보여주고 각 파일에 대해 설명하겠습니다. getbyid
和 update
services/service.go
. 분명히 이것은 실제 코드는 아니지만 지금은 중요하지 않습니다. sut
)。通过依赖注入,我们将利用通过接口 teamrepointerface
注入的 repo
services/service_test.go
패키지에서 제공하는 기능)를 볼 수 있습니다.
코드에서 무슨 일이 일어나고 있는지 더 자세히 설명하는 몇 가지 주석을 찾을 수 있습니다. 짐작할 수 있듯이 문제는 다음 호출이 코드에 없다는 것입니다. repomock.on("getbyid", 1).return(repo.team{id: 1, teamownerid: 1, 姓名: "test"}, nil).times(1)
위 내용은 주장: 모의: 메서드 호출이 예기치 않게 발생했기 때문에 무엇을 반환해야 할지 모르겠습니다. Go에서 단위 테스트를 작성하는 동안 오류가 발생했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!