6

내 응용 프로그램에서 외부 끝점을 호출해야하고 너무 느린 경우 대체가 활성화됩니다.내 회로 차단기 폴백이 호출되는지 확인하기 위해 통합 테스트를 구현하는 방법은 무엇입니까?

@FeignClient(name = "${config.name}", url = "${config.url:}", fallback = ExampleFallback.class) 
public interface Example { 
@RequestMapping(method = RequestMethod.GET, value = "/endpoint", produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) 
    MyReturnObject find(@RequestParam("myParam") String myParam); 
} 

그리고 그 대체 구현 : 또한

@Component 
public Class ExampleFallback implements Example { 

    private final FallbackService fallback; 

    @Autowired 
    public ExampleFallback(final FallbackService fallback) { 
     this.fallback = fallback; 
    } 

    @Override 
    public MyReturnObject find(final String myParam) { 
     return fallback.find(myParam); 
    } 

, 회로 차단기에 대한 구성 제한 시간 : hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000

다음 코드는 내 애플처럼 보이는 방법의 예입니다

내 회로 차단이 작동하는지 확인하기 위해 어떻게 통합 테스트를 구현할 수 있습니까? 즉, 내 끝점 (이 경우 조롱 됨)이 느리거나 4xx 또는 5xx와 같은 오류를 반환하면? 나는 봄 부팅을 사용하고

봄 클라우드 (척하기 + Hystrix) 난 척하기 또는 Hystrix을 알고이 donot

답변

1

참고로 1.5.3.

제 생각에는 Feign + Hystrix의 다양한 구현 정보를 시뮬레이트하는 자동화 된 통합 테스트를 구현하는 것이 문제가됩니다. 구현 세부 사항은 언제든지 바뀔 수 있습니다. 주 엔드 포인트에 도달 할 수 없거나, 불법적 인 데이터 (예 : html 오류 메시지 수신, 특수 형식으로 XML 데이터를 내보낼 때), 디스크 꽉 .........

끝점은 Feild + Hystrix의 구현을 가정합니다. 끝점이 오류 상태에서 어떻게 작동하는지 (즉, null을 반환하고 특정 오류 코드를 반환하고 Xyz 유형의 예외를 throw합니다.)

나는 하나의 자동 절대 도달 할 수없는 URL이있는 실제 기본 설정과 처리 된 데이터가 모의에서 온 것인지를 확인하는 조롱 - 대체 - 엔드 포인트로 통합 테스트를 수행합니다. 이 자동화 된 테스트는 "네트워크 연결이 너무 느립니다"라는 처리가 앱의 관점에서 "url-notfound"와 동일하다고 가정합니다.

다른 모든 테스트에서는 Feign + Hystrix를 모방 한 Feign + Hystrix 주위에 얇은 래퍼 인터페이스를 만들 것입니다. 이 방법을 사용하면 기본 인터페이스에서 200 바이트를 수신 한 다음 결과를 얻으면 어떻게 될지 자동으로 테스트 할 수 있습니다.

외부 종속성 숨기기에 대한 자세한 내용은 onion-architecture

을 참조하십시오.