Timeout of 15000ms exceeded что значит
Timeout of 10000ms exceeded even when timeout is give as 30000 #1172
Comments
arjunkomath commented Mar 17, 2016
Config file:
waitforTimeout: 30000,
At both places I’m giving timeout as 30000, but still the test will timeout at 10000.
The text was updated successfully, but these errors were encountered:
patthiel commented Mar 22, 2016
Can you provide the error that’s outputted? thanks
asoto-2sol commented Apr 1, 2016
I’m having the same error, this is the error output. I also configured the waitforTimeout setting to 30000
christian-bromann commented Apr 1, 2016 •
As you can get from the docs the waitforTimeout sets the default timeout for all waitForXXX commands. If you want to increase the test timeout you need to set it in your framework options like in Mocha:
asoto-2sol commented Apr 3, 2016
Thanks for the clarification, changed the mocha timeout settings and is all working as expected now.
prewk commented Oct 18, 2016
@christian-bromann You might want to change timeput to timeout in your answer.
christian-bromann commented Oct 18, 2016
briancullinan commented Aug 7, 2017 •
There should be a warning for repeated config settings. WebStorm highlights the object key when there is a duplicate declaration it would be nice if the «testing» framework shows these kinds of mistakes.
P.S. Looking at Apache configuration it would not be out of scope to add a warning for syntax errors when the test starts. Seems pretty basic to me.
christian-bromann commented Aug 7, 2017
it would be nice if the «testing» framework shows these kinds of mistakes
This is not the responsibility of the testing framework. It should be caught by your IDE!
briancullinan commented Aug 7, 2017
christian-bromann commented Aug 7, 2017
It is not out of scope to do basic sanity checks
We do these but not on that level. If you have duplicate property keys in your config, WebdriverIO couldn’t even detect those.
briancullinan commented Aug 7, 2017
@christian-bromann After doing some research, I don’t see a way for Nodejs to report this error either. Is this normal to have 1 IDE that correctly evaluates code, but then those evaluations aren’t available from within the compiler? That seems odd that an IDE does something a compiler does not.
christian-bromann commented Aug 7, 2017
Is this normal to have 1 IDE that correctly evaluates code, but then those evaluations aren’t available from within the compiler?
I don’t know. What I know is that WebdriverIO can’t do anything here.
selvakumar1994 commented Aug 29, 2018
@christian-bromann where i added the below script in node js
mochaOpts: <
timeout: 99999999
>
christian-bromann commented Aug 29, 2018
in your wdio.conf.js as shown in the example
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Для асинхронных тестов и хуков убедитесь, что вызывается «done ()»; если возвращаете обещание, убедитесь, что оно разрешается
У меня есть этот тест nodejs, при тестировании я получаю ошибку готовой функции, не объявленной.
Мой тестовый код: я перезвонил, но все еще получаю сообщение об ошибке done();
10 ответов
Я столкнулся с той же проблемой, ссылка @ MFAL в комментарии помогла. Я расширяюсь на этом.
Другие способы, упомянутые в блоге Витса:
Используйте async / wait:
Со мной случилось, когда я вернулся, поддерживая старый нод-модуль с Node6 до Node 13. Исправление очень простое:
Я также получил эту ошибку, и после нескольких часов исследований и отладки я нашел основную причину.
Рассмотрим этот тест:
Когда я запускаю тест, я получаю эту ошибку:
Теперь рассмотрим этот немного другой тест, в котором аргумент done удален :
Когда я запускаю этот тест, он проходит.
Каким-то образом наличие аргумента done в асинхронной функции нарушает тест, даже если он не используется, и даже если done () вызывается в конце теста.
Использование версии Mocha 7.2.0
Вы можете просто добавить время ожидания к определенному тесту, чтобы увеличить / переопределить время ожидания по умолчанию, которое составляет 2 секунды. У меня была та же проблема, но я смог ее обойти, используя:
У меня была такая же ошибка, и это на самом деле потому, что я передал готово и называл готовым. Таким образом, удаление готового делает тест пройденным. Я вызывал функцию async в маршруте, который тестировал
Это поможет мне решить проблему.
Эта ошибка возникает из-за мокко.
Если ничего из вышеперечисленного не помогает, попробуйте избавиться от «done» и использовать вместо этого async function ()
In mocha testing while calling asynchronous function how to avoid the timeout Error: timeout of 2000ms exceeded
In my node application I’m using mocha to test my code. While calling many asynchronous functions using mocha, I’m getting timeout error ( Error: timeout of 2000ms exceeded. ). How can I resolve this?
7 Answers 7
You can either set the timeout when running your test:
Or you can set the timeout for each suite or each test programmatically:
For more info see the docs.
I find that the «solution» of just increasing the timeouts obscures what’s really going on here, which is either
You usually encounter #2 when Mocha doesn’t receive assertion errors from a callback. This is caused by some other code swallowing the exception further up the stack. The right way of dealing with this is to fix the code and not swallow the error.
When external code swallows your errors
In case it’s a library function that you are unable to modify, you need to catch the assertion error and pass it onto Mocha yourself. You do this by wrapping your assertion callback in a try/catch block and pass any exceptions to the done handler.
This boilerplate can of course be extracted into some utility function to make the test a little more pleasing to the eye:
Speeding up network tests
Other than that I suggest you pick up the advice on starting to use test stubs for network calls to make tests pass without having to rely on a functioning network. Using Mocha, Chai and Sinon the tests might look something like this
В тестировании mocha при вызове асинхронной функции как избежать ошибки тайм-аута: превышен тайм-аут 2000ms
в моем приложении узла я использую mocha для тестирования моего кода. При вызове многих асинхронных функций с помощью mocha я получаю ошибку тайм-аута ( Error: timeout of 2000ms exceeded. ). Как я могу это решить?
4 ответов
вы можете либо установить тайм-аут при запуске теста:
или вы можете установить тайм-аут для каждого набора или каждого теста программно:
для получения дополнительной информации см. docs.
вы обычно сталкиваетесь с #2, когда Mocha не получает ошибки утверждения от обратного вызова. Это вызвано каким-то другим кодом, проглатывающим исключение дальше по стеку. правильный способ справиться с этим-исправить код и не проглотить ошибку.
когда внешний код проглатывает свои ошибки
в случае, если это библиотечная функция, которую вы не можете изменить, вам нужно поймать ошибку утверждения и передать ее на Мокко самостоятельно. Вы делаете это, обернув обратный вызов утверждения в блок try/catch и передав любые исключения обработчик готов.
этот шаблон, конечно, может быть извлечен в некоторую функцию полезности, чтобы сделать тест немного более приятным для глаз:
ускорение сетевых тестов
кроме этого, я предлагаю вам взять совет по началу использования тестовых заглушек для сетевых вызовов, чтобы тесты проходили без необходимости полагаться на функционирующую сеть. Используя Мокко, чай и Синон, тесты могут выглядеть примерно так это
посмотреть Синон это nise docs для получения дополнительной информации.
для меня проблема была на самом деле описать функцию, который при условии функции стрелки, заставляет mocha пропустить тайм-аут, и ведут себя не последовательно. (Используя ES6)
поскольку никакое обещание не было отклонено, я получал эту ошибку все время для разных тестов, которые терпели неудачу внутри блока описания
Так вот как это выглядит, когда не работает должным образом:
и это работает с использованием анонимной функции
Надежда он помогает кому-то, моя конфигурация выше: (nodejs: 8.4.0, npm: 5.3.0, mocha: 3.3.0)
немного поздно, но кто-то может использовать это в будущем. Вы можете увеличить время ожидания теста, обновив сценарии в пакете.json со следующим:
timeout of 2000ms exceeded. Ensure the done() callback is being called in this test. #2025
Comments
gumatias commented Dec 26, 2015
I’m getting the following error when running the entire suite of tests:
timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
However, the problem still persists even after deleting every occurrence in my tests that deal with HTTP and promises. All I’ve got now are Angular directive and controller specs which doesn’t seem to do much other than checking template data, directive and controller logic.
Does anyone know why this is still happening and if there’s a better way to know exactly what the issue is? thanks!
The text was updated successfully, but these errors were encountered:
boneskull commented Dec 26, 2015
@gumatias to be much more help we’d need to set your tests
gumatias commented Dec 27, 2015
There’s around 700+ specs at the moment and they’re all proprietary code. I can provide one of two similar samples, would that be any helpful?
gumatias commented Dec 28, 2015
Below is what I currently have in package.json. Upgrading libraries such as mocha and karma-mocha didn’t seem to help.
Below are some of my attempts on getting to a state where the timeouts would stop occurring (without success).
1. Called done() within and after each promise and async calls in tests
2. Removed all specs that deals with async calls, promises, httpBackend and timeout (just in case)
3. Upgraded most libraries in package.json :
4. Removed specs that karma spec reporter was complaining to be slow:
e.g. Chrome 39.0.2171 (Mac OS X 10.11.2) SLOW 2.457 secs: My Spec Name «before each» hook for «should display » Add My Spec» when doing something»
Turned out other new specs were complaining to be slow. This could probably lead to deleting specs without really finding the root cause.
gumatias commented Dec 29, 2015
Closing this issue. It turned out to be a memory leak issue described here #2030
elvinaze commented Aug 30, 2016
Test-specific timeouts may also be applied, or the use of this.timeout(0) to disable timeouts all together:
spike321 commented Dec 13, 2016 •
If you’re using Ember, try wrapping async calls in Ember.run => read this
I had the same problem, and Ember.run => fixed it.
vishnu2prasadh commented Sep 7, 2017 •
Am getting
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure «done()» is called; if returning a Promise, ensure it resolves.
How to fix this?
My code is:
ScottFreeCode commented Sep 8, 2017
Hi @vishnu2prasadh, have you tried increasing the timeout to longer than the HTTP API is expected to take to respond? Your test’s usage of done appears to be correct.
vishnu2prasadh commented Sep 8, 2017
@ScottFreeCode thank you. Error resolved by adding this.timeout(10000); inside
ianrussel commented Jan 25, 2018
just add in your package.json under scripts
Then you can just run
CryptoKiddies commented Jun 1, 2018
@elvinaze is there a way to increase timeout limits in the beforeEach block?
chunkingz commented Dec 9, 2018
just add in your package.json under scripts
Then you can just run
the most useful answer so far 👍
ranjanpandey11111 commented Feb 23, 2019
just add in your package.json under scripts
Then you can just run
ashish101184 commented Apr 9, 2019
it(‘should access user module’, function(done) <
any_asynchfunction().then(function(check) <
try <
assert.strictEqual(check,true,’admin user have access user module’);
done();
>catch(err) <
done(err);
>
>);
>);
var any_asynchfunction = function () <
var deferred = q.defer();
// Call Async function like : API call (http://api.domain.com)
deferred.resolve(res);
return deferred.promise;
>
Testing async code with Mocha using callbacks and promises
plroebuck commented Apr 9, 2019 •
@ashish101184, don’t add comments to unrelated closed issues!
Your problem was explained in the documentation.
vijaysimh commented Apr 29, 2019
Test-specific timeouts may also be applied, or the use of this.timeout(0) to disable timeouts all together:
source: https://mochajs.org/#timeouts
Hello have installed botium directline3 facing error ‘Timeout of 60000ms exceeded’ as per your guidelines in which file should we have add these lines
sean-olson commented May 12, 2019 •
scibert commented Jun 3, 2020
I was also getting that error, and after several hours of researching and debugging, I found the root cause.
Consider this test:
When I run the test, I get this error:
Now consider this slightly different test, where the done argument is removed:
When I run this test, it passes.
Somehow the presence of the done argument in the async function breaks the test, even if it’s not used, and even if done() is called at the end of the test.
VishSinha commented Jul 27, 2020
just add in your package.json under scripts
Then you can just run
jeff-r-koyaltech commented Apr 15, 2021
I know this is old, but I have encountered tests that run fine on one version of Node, but hang with the «timeout of 2000ms exceeded. Ensure the done() callback» message on other versions.
My node code runs on Node v 14.x as per my Dockerfile, and my tests pass fine on that version. But on a build agent in Azure, I was running on Node v 12.x, and I was getting this error. Once I specified v 14.x, it also worked on Azure’s pipeline without any other code changes. 👍
So it’s worth trying a few different versions of Node, if you’re otherwise stuck!
Thanks to all who have previously commented on this issue. Good info to know.