Я отправляю сетевой запрос в тестовом примере, но иногда это занимает больше 2 секунд (время ожидания по умолчанию).
Как увеличить время ожидания для одного теста?
Вот и вы: http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
Для функции стрелки используйте следующее:
it('accesses the network', (done) => {
[Put network code here, with done() in the callback]
}).timeout(500);
before(function(done){this.timeout(5 * 1000);...});
.timeout(500)
в конецit(...).timeout(500)
Если вы хотите использовать функции стрелок es6, вы можете добавить
.timeout(ms)
в конецit
определения:По крайней мере, это работает в Typescript.
источник
.timeout
не включено в типизацию DefiniteTyped для mocha: i.imgur.com/jQbWCn1.png - Использованиеthis.timeout(2000)
илиthis.slow(500)
с обычной старой функцией работает и компилируется без ошибокit
, это не работает дляdescribe
.describe()
илиcontext()
?.timeout
теперь включен в Мокко типизации DefinitelyTyped по адресу:Mocha.IRunnable
. Однако, если вы используете IDE Webstorm для запуска этих тестов, обратите внимание: по какой-либо причине плагин интеграции Mocha WebStorm по-прежнему не распознает тесты Mocha с.timeout()
добавленными (это означает, что рядом с ними нет кнопки «Выполнить»), и, таким образом, я рекомендую избегать использования стрелок, чтобы разрешить использованиеthis.timeout()
вместо них.(так как я столкнулся с этим сегодня)
Будьте осторожны при использовании синтаксиса жирной стрелки ES2015:
Это не удастся:
РЕДАКТИРОВАТЬ: Почему это не удается:
Как @atoth упоминает в комментариях, функции жирной стрелки не имеют этой привязки. Таким образом, это не возможно для его функционирования , чтобы связываться с этим обратного вызова и обеспечить тайм - аут функции.
Итог : не используйте функции стрелок для функций, которые требуют увеличенного времени ожидания.
источник
this
функций со стрелками нет привязки - не то же самое, что можно предположить, что они есть, просто разные. У них есть только лексические рамки. Вы не можете связать несуществующее это. Вот почему.bind
,.call
и т.д. не работает с ним.this
есть.Если вы используете в NodeJS, вы можете установить тайм-аут в package.json
тогда вы можете запустить с помощью npm, как:
источник
Из командной строки:
источник
Вы также можете подумать о другом подходе и замене вызова сетевого ресурса заглушкой или фиктивным объектом. Используя Sinon , вы можете отделить приложение от сетевого сервиса, сосредоточив усилия на разработке.
источник
Для проверки на
Express
:В примере время теста составляет 4000 (4 с).
Примечание:
setTimeout(done, 3500)
незначительно для того, чтоdone
вызывается во время теста, ноclearTimeout(timeOut)
оно избегает, чем используется все это время.источник
Это сработало для меня! Не могу найти что-нибудь, чтобы заставить его работать до ()
источник