Тестирование BDD со слишком большим количеством фоновых заданий?

Я использую BDD (Behat) для функционального тестирования в моем проекте.
Теперь у меня проблема при тестировании функции со слишком большим количеством фоновых заданий. Пример:

Scenario: Import issue at the first time
Given I have a issue package "1602.zip"When I upload issue "1602.zip"Then I have to wait until it is finished
And I can see list of articles are imported
And status of issue is "1"

«Тогда я должен ждать, пока это не закончится» содержит:

  • Сервер 1 получил загруженный файл, вставил некоторые метаданные в базу данных и пометил статус как «импортирующий», затем загрузил zip-файл на s3
  • Сервер 2 загружает файл с s3 и обрабатывает ресурсы, такие как PDF, изображения, затем архивирует все после обработки и снова загружает на s3.
  • Сервер 3 загружает полученный zip-пакет (выполненный сервером 2) из ​​s3 и начинает импортировать выпуск (импорт pdf, изображений, статей …)

«И я могу видеть список статей импортируются«Я вызываю API для сервера, чтобы получить список статей по этому вопросу.

Итак, как вы можете видеть, потому что во время импорта у нас слишком много фоновых заданий (с использованием Resque), поэтому мне нужно подождать, пока оно закончится, проверив состояние проблемы:

while ($status != 1) {
$status = getStatusOfIssue(123);
if (1 === $status) {
break;
}
}

Проблема в том, что я не знаю, как долго мне ждать, потому что это зависит от размера пакета вопроса, чем больше размер, тем дольше время ожидания. Так что в этой ситуации, что мне делать?

3

Решение

Как правило, вам нужно использовать условное ожидание, чтобы проверить то, что вы знаете (подождите несколько секунд).

Условие может быть:
— статус запроса
— элемент отображается на странице
— страница / элемент не отображается

Совет: вы должны избегать использования только while цикл и использовать do-while Вместо этого выполните цикл с двумя условиями, одним из которых вам нужно, в вашем случае проверьте состояние, и тем, который выйдет из цикла, если первый никогда не будет выполнен, как подсчет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]