httptest를 사용하여 단위 테스트 http 요청 재시도

WBOY
풀어 주다: 2024-02-10 12:30:09
앞으로
764명이 탐색했습니다.

使用 httptest 单元测试 http 请求重试

PHP 편집자 Baicao는 개발자가 http 요청을 다시 시도할 때 테스트하는 데 도움이 될 수 있는 "httptest"라는 단위 테스트 도구를 소개합니다. 이 도구는 다양한 http 요청을 시뮬레이션할 수 있을 뿐만 아니라 자동으로 요청을 재시도하여 코드의 안정성과 신뢰성을 보장합니다. httptest 도구를 사용하여 개발자는 http 요청을 쉽게 단위 테스트할 수 있으며, 네트워크 불안정이나 기타 비정상적인 상황에 대응하여 요청을 쉽게 재시도할 수 있습니다. 이 도구를 사용하면 개발 효율성을 크게 향상시키고 오류 가능성을 줄일 수 있으므로 모든 PHP 개발자가 시도해 볼 가치가 있는 도구입니다.

질문 내용

HTTP 요청을 래핑하고 응답 역마샬링을 처리하는 HttpRequest라는 구성 요소에 대한 단위 테스트를 작성하려고 합니다. 최근에 저는 첫 번째 시도에서 "연결 거부" 오류가 발생하는 경우 HTTP 요청을 재시도할 수 있는 기능을 이 구성 요소에 추가했습니다.

HttpRequest 구성 요소를 사용하려면 한 번 호출합니다. user, err := HttpRequest[User](config)。 config 参数包含执行请求的所有必要信息,例如 URL、方法、超时、重试次数和请求正文。它还将响应正文解组为指定类型的实例(在本例中为 User)

초기 요청이 "연결 거부됨" 오류와 함께 실패했지만 두 번째 시도에서는 성공하는 시나리오를 테스트하려고 할 때 문제가 발생합니다. 재시도는 구성 요소 내부에서 발생하므로 구성 요소를 한 번만 호출합니다.

"연결이 거부됨"으로 인해 요청이 실패하려면 호출되는 포트에 리스너가 필요하지 않기 때문에 이 시나리오에 대한 단위 테스트를 만드는 것이 어렵다는 것을 알았습니다. 문제는 httptest 时,它总是在创建实例时侦听端口,即使使用 httptest.NewUnstartedServer 也是如此。因此,在创建 httptest 인스턴스를 사용할 때 클라이언트 코드에서 "연결 거부" 오류가 결코 발생하지 않는다는 것입니다.

그러나 HttpRequest 호출은 httptest 实例之前,我不知道它将侦听哪个端口。 httptest 总是选择一个随机端口,并且无法以编程方式指定一个端口。这意味着我无法在创建 httptest 인스턴스가 생성되기 전에 이루어집니다.

이 시나리오를 효과적으로 단위 테스트하는 방법에 대한 아이디어가 있는 사람이 있습니까?

해결책

newunstartedserver 매우 간단합니다.

으아악

포트를 직접 선택하는 것이 귀하에게 적합하다면 다음과 같이 할 수 있습니다:

으아악

리스너 생성 코드는 httptest.newlocallistener에서 수정되었습니다.

또 다른 옵션은 http.roundtripper 接口并使用此 roundtripper 创建一个 http.client을 구현하는 것입니다. 다음은 net/에서 복사한 http/client_test.go의 예입니다.

으아악

위 내용은 httptest를 사용하여 단위 테스트 http 요청 재시도의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿