>  기사  >  백엔드 개발  >  Golang 단위 테스트의 간단한 오류 문제

Golang 단위 테스트의 간단한 오류 문제

WBOY
WBOY앞으로
2024-02-13 20:51:16594검색

Golang 单元测试的简单错误问题

Golang 단위 테스트는 코드 품질과 기능적 정확성을 보장하는 중요한 수단이지만 실제로는 간단한 오류가 자주 발생합니다. 이 기사에서는 PHP 편집자 Zimo가 몇 가지 일반적인 오류 문제와 해결 방법을 소개합니다. 이러한 문제에 대한 해결책을 배우면 누구나 Golang 단위 테스트를 보다 원활하게 수행하고 코드의 품질과 신뢰성을 향상시킬 수 있다고 믿습니다.

질문 내용

이 기능을 테스트 하다가 문제가 생겼는데 내부에 오류가 있습니다. 다음은 오류를 반환하지 않지만 응답 json을 보내는 responsejson 함수입니다.

으아아아

다음은 오류 없이 json에 응답하는 작성기를 성공적으로 테스트하는 모의 응답 작성기를 생성하는 단위 테스트 코드입니다. responsejson() 함수에서 오류 유형을 반환하지 않는데 아래와 같이 test_responsejson 함수에서 어떻게 테스트할 수 있나요?

으아아아

또한 log.println() 내장 함수에 대한 실제 로그 출력을 생성하는 함수를 만들었습니다. 나는 log.println() 함수가 내장 함수이고 실패할 가능성이 없다는 것을 알고 있습니다. 그러나 나는 단위 테스트에서 100% 적용 범위를 달성하고 싶습니다. 도와주세요! 감사합니다 :)

func responsejson(w http.responsewriter, code int, message string) {
    jsonstatus := struct {
        code int `json:"code"`
        message string `json:"message"`
    }{
        message: message,
        code: code,
    }

    bs, err := json.marshal(jsonstatus);

    if err != nil {
        log.println("error in marshal json in responsejson: ", err)
        str := "internal server error. please contact the system administrator."
        io.writestring(w, str);
        return 
    } else {
        io.writestring(w, string(bs));
        return
    }
    
}

Solution

간단히 말하면 아래와 같이 responsejson 함수에 대한 테스트 케이스를 작성할 수 있습니다.

으아아아

We can return from bs 获取错误,err := json.marshal(jsonstatus)json.marshal 함수가 반환할 수 있는 오류에는 두 가지 유형이 있습니다.

  1. unsupportedtypeerror (예: 채널, 복합 값 및 함수 값)
  2. unsupportedvalueerror(예: 순환 데이터 구조)

위 오류 중 하나를 생성하기 위해 값을 구문 분석할 수 없습니다. 지원되는 값과 지원되는 유형으로 구조체를 구문 분석하고 있습니다. 따라서 100% 커버리지로 테스트를 작성할 수 없습니다.

위 내용은 Golang 단위 테스트의 간단한 오류 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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