Спок - успешно прошел тест после тайм-аута - PullRequest
0 голосов
/ 04 июня 2019

В Споке вы можете установить время ожидания, после которого тест не пройден.

@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 Ответ

1 голос
/ 23 июня 2019

Зависит от того, как вы реализовали метод 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
}

Конечно, это псевдокод и требует корректировок вашего проекта.

...