Я использую 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"
«Тогда я должен ждать, пока это не закончится» содержит:
«И я могу видеть список статей импортируются«Я вызываю API для сервера, чтобы получить список статей по этому вопросу.
Итак, как вы можете видеть, потому что во время импорта у нас слишком много фоновых заданий (с использованием Resque), поэтому мне нужно подождать, пока оно закончится, проверив состояние проблемы:
while ($status != 1) {
$status = getStatusOfIssue(123);
if (1 === $status) {
break;
}
}
Проблема в том, что я не знаю, как долго мне ждать, потому что это зависит от размера пакета вопроса, чем больше размер, тем дольше время ожидания. Так что в этой ситуации, что мне делать?
Как правило, вам нужно использовать условное ожидание, чтобы проверить то, что вы знаете (подождите несколько секунд).
Условие может быть:
— статус запроса
— элемент отображается на странице
— страница / элемент не отображается
Совет: вы должны избегать использования только
while
цикл и использоватьdo-while
Вместо этого выполните цикл с двумя условиями, одним из которых вам нужно, в вашем случае проверьте состояние, и тем, который выйдет из цикла, если первый никогда не будет выполнен, как подсчет.
Других решений пока нет …