Когда вы передаете объект в качестве аргумента или зависимости клиентской функции, он получит копию переданного объекта.Таким образом, он не сможет обнаружить какие-либо изменения, сделанные внешним кодом.В этом конкретном случае функция waitForStatus
не достигнет своего состояния завершения, потому что она не может обнаружить изменения в объекте log
, сделанные внешней перехватчиком запросов.Это означает, что эта функция будет работать бесконечно, пока она не будет использовать всю доступную память стека.После этого произойдет ошибка с переполнением стека.
Чтобы избежать этой ситуации, вы можете проверить, что ответ имеет статус READY
, если вы измените аргумент предиката функции contains
.Взгляните на следующий код:
.expect(logger.contains(record => record.response.statusCode === 200 &&
JSON.parse(record.response.body).status === 'READY'))
.ok({ timeout: 5000 });
Также вы можете использовать опцию timeout
.Это время (в миллисекундах), в течение которого утверждение может пройти, прежде чем тест не пройден.