>

스팍에서는 테스트가 실패한 후 시간 초과를 설정할 수 있습니다.

@Timeout(value = 1500, unit = TimeUnit.MILLISECONDS)
def "this method should not run longer than 2 seconds"() {
    given:
    userFilter = buildUserFilter(); // criteria to search users.
    exportDestination = buildDestination(); // where to export users.
    expect: "should not take long"
    userService.exportUsers(userDetails);
}

이제 반대가 필요합니다 : 타임 아웃 후에 테스트를 통과해야합니다.

def "should block and wait until user-microservice is up"() {
    given:
    userExportMicroserviceClient = mock()
    userExportMicroserviceClient.getUsers(_) >> httpNotFound
    expect: "should block the current thread because userMicroservice is down"
    failHere()
}

다른 서비스 가용성에 의존하는 것은 나쁜 일입니다. 이 작업은 데이터 마이그레이션 중에 만 실행되며 일상적인 작업과 관련이 없습니다.

다시 말해, 사용자에게 마이크로 서비스를 제공하는 방법이 있으며 사용자 마이크로 서비스가 가동 될 때까지 차단합니다. 어떻게 테스트하나요?


  • 답변 # 1

    exportUsers() 를 어떻게 구현했는지에 따라 다릅니다  방법. 매초마다 마이크로 서비스를 가져 오는 것으로 가정하십시오. 그렇다면, 아래로, 아래로, 위로 마이크로 서비스의 응답을 에뮬레이션 할 수 있습니다.

    // The timeout includes 2 seconds of microservice down.
    @Timeout(value = 3500, unit = TimeUnit.MILLISECONDS)
    def "should block and wait until user-microservice is up"() {
        given: "mocked microservice which is not available for first 2 calls and available on 3rd call"
        userExportMicroserviceClient = mock()
        userExportMicroserviceClient.getUsers(_) >>> [httpNotFound, httpNotFound, httpOk]
        when: "calling the user getting should take long time"
        def actualResult = userService.exportUsers(userDetails)
        then:
        def expectedResult = <prepare>
        actualResult == expectedResult
    }
    
    

    물건, 이것은 의사 코드이며 프로젝트 별 수정이 필요합니다.

  • 이전 html - 수레만으로 H1 아래로 H2를 이동하는 방법
  • 다음 numpy - 파이썬에서 결합 미분 방정식 시스템을 푸는 방법은 무엇입니까?