Przesyłam żądanie sieciowe w przypadku testowym, ale czasami trwa to dłużej niż 2 sekundy (domyślny limit czasu).
Jak zwiększyć limit czasu dla pojedynczego przypadku testowego?
Proszę bardzo: http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
Do funkcji strzałek używaj:
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)
na koniecit(...).timeout(500)
Jeśli chcesz używać funkcji strzałek es6, możesz dodać a
.timeout(ms)
na końcu swojejit
definicji:Przynajmniej działa to w maszynopisie.
źródło
.timeout
nie jest wliczone w typowania DefinitelyTyped dla mocha: i.imgur.com/jQbWCn1.png - Używaniethis.timeout(2000)
lubthis.slow(500)
z regularnym stare utwory funkcyjne i kompiluje bez błędówit
, ale nie działadescribe
.describe()
lubcontext()
?.timeout
jest obecnie zawarte w Mocha typowania DefinitelyTyped pod adresem:Mocha.IRunnable
. Jeśli jednak używasz Webstorm IDE do uruchamiania tych testów, uwaga: z jakiegokolwiek powodu wtyczka integracji Mocha WebStorm nadal nie rozpoznaje testów Mocha z.timeout()
dołączonymi (co oznacza, że obok nich nie pojawia się przycisk „uruchom”), i dlatego zalecam unikanie funkcji strzałek, aby umożliwić korzystanie z nichthis.timeout()
.(odkąd dzisiaj na to wpadłem)
Zachowaj ostrożność podczas korzystania ze składni Fat Arrow ES2015:
To się nie powiedzie:
EDYCJA: Dlaczego się nie udaje:
Jak wspomniano w komentarzach @atoth, funkcje strzałek grubych nie mają tego wiązania. W związku z tym, że nie jest możliwe, by to funkcjonować wiązać się to z zwrotnego i zapewnić Timeout funkcję.
Konkluzja : Nie używaj funkcji strzałek w przypadku funkcji, które wymagają dłuższego czasu oczekiwania.
źródło
this
Funkcje strzałek nie są wiążące - nie ten sam sposób sugerowałby, że mają jakieś, po prostu inne. Mają tylko zakresy leksykalne. Nie możesz powiązać nieistniejącego tego. Dlatego.bind
,.call
itp nie praca z nim.this
jest.Jeśli używasz w NodeJS, możesz ustawić limit czasu w package.json
wtedy możesz uruchomić używając npm:
źródło
Z linii poleceń:
źródło
Możesz także pomyśleć o przyjęciu innego podejścia i zastąpieniu wywołania zasobu sieciowego obiektem pośredniczącym lub próbnym. Korzystając z Sinon , możesz oddzielić aplikację od usługi sieciowej, koncentrując swoje wysiłki na rozwoju.
źródło
Do nawigacji testowej w
Express
:W tym przykładzie czas testu wynosi 4000 (4s).
Uwaga:
setTimeout(done, 3500)
jest niewielka, ponieważdone
jest wywoływana w czasie testu, aleclearTimeout(timeOut)
unika się jej przez cały ten czas.źródło
To zadziałało dla mnie! Nie mogłem znaleźć niczego, co by działało wcześniej ()
źródło