Изменить тайм-аут по умолчанию для мокко
у меня следующий вопрос
если у нас есть модульный тестовый файл my-spec.JS и работает с мокко :
mocha my-spec.js
тайм-аут по умолчанию будет 2000 ms.It можно перезаписать для частичного теста с параметром командной строки:
mocha my-spec.js --timeout 5000
вопрос:
Можно ли изменить тайм-аут по умолчанию глобально для всех тестов ?
То есть когда вы звоните
mocha my-spec.js
значение таймаута по умолчанию будет отличаться от 2000 МС
Заранее спасибо
4 ответов:
по умолчанию Mocha будет читать файл с именем
test/mocha.opts, который может содержать аргументы командной строки. Таким образом, вы можете создать такой файл, который содержит:--timeout 5000всякий раз, когда вы запускаете Mocha в командной строке, он будет читать этот файл и установить тайм-аут 5 секунд по умолчанию.
другой способ, который может быть лучше в зависимости от вашей ситуации, чтобы установить его, как это на верхнем уровне
describeвызовите тестовый файл:describe("something", function () { this.timeout(5000); // tests... });это позволит вам установить тайм-аут только для каждого файла.
вы можете использовать оба метода, если вы хотите глобальное значение по умолчанию 5000, но установить что-то другое для некоторых файлов.
обратите внимание, что вы обычно не можете использовать функцию стрелки, Если вы собираетесь вызвать
this.timeout(или доступ к любому другому членуthisчто Мокко устанавливает для вас). Например, это обычно не работает:describe("something", () => { this.timeout(5000); // tests... });это потому, что функция стрелки принимает
thisиз области появится функция В. Мокко вызовет функцию с хорошим значением дляthisно это значение не передается внутрь функции стрелка. Документация для Мокко говорит на этой теме:передача функций стрелки ("лямбды") Мокко не рекомендуется. Из-за лексической привязки этого, такие функции не могут получить доступ к контексту Мокко.
Если вы (как и я) используете Mocha в браузере, а не на сервере, вы всегда можете изменить глобальную конфигурацию с помощью
mocha.setup.mocha.setup({ timeout: 5000 });просто добавьте строку выше в любом месте вашего набора тестов, предпочтительно в верхней части спецификации или в отдельном помощнике теста.
здесь ссылка на документацию С несколькими примерами, показывающими, как настроить Мокко в браузере.
добавление этого для полноты. Если вы (как и я) используете скрипт в своем
package.jsonфайл, просто добавьте--timeoutвозможность мокко:"scripts": { "test": "mocha 'test/**/*.js' --timeout 10000", "test-debug": "mocha --debug 'test/**/*.js' --timeout 10000" },затем вы можете запустить
npm run testчтобы запустить набор тестов с таймаутом, установленным в 10 000 миллисекунд.
просто добавив правильный ответ, вы можете установить тайм-аут с помощью функции стрелки следующим образом:
it('Some test', () => { }).timeout(5000)
Comments