Estou enviando uma solicitação de rede em um caso de teste, mas às vezes isso leva mais de 2 segundos (o tempo limite padrão).
Como aumentar o tempo limite de um único caso de teste?
Aqui está: http://mochajs.org/#test-level
it('accesses the network', function(done){
this.timeout(500);
[Put network code here, with done() in the callback]
})
Para a função de seta, use o seguinte:
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)
ao final deit(...).timeout(500)
Se você deseja usar as funções de seta es6, pode adicionar um
.timeout(ms)
no final de suait
definição:Pelo menos isso funciona no texto datilografado.
fonte
.timeout
não está incluído nas tipagens DefinitelyTyped para mocha: i.imgur.com/jQbWCn1.png - Usandothis.timeout(2000)
outhis.slow(500)
com um regulares obras função antiga e compila sem errosit
, não funcionadescribe
.describe()
oucontext()
?.timeout
agora está incluído no tipagens Mocha do DefinitelyTyped em:Mocha.IRunnable
. No entanto, se você estiver usando o IDE Webstorm para executar esses testes, observe: por qualquer motivo, o plug-in de integração Mocha do WebStorm ainda não reconhece os testes Mocha com.timeout()
anexado (o que significa que nenhum botão 'executar' aparece ao lado deles), e, portanto, defendo evitar as funções de seta para permitir o usothis.timeout()
.(desde que eu me deparei com isso hoje)
Cuidado ao usar a sintaxe de seta gorda do ES2015:
Isso irá falhar:
EDIT: Por que falha:
Como @atoth menciona nos comentários, as funções de seta gorda não possuem essa vinculação. Portanto, não é possível que a função it se vincule a isso do retorno de chamada e forneça uma função de tempo limite .
Conclusão : não use as funções de seta para funções que precisam de um tempo limite aumentado.
fonte
this
vinculação nas funções das setas - não da mesma maneira sugere que elas tenham algum tipo, apenas diferente. Eles só têm escopos lexicais. Você não pode vincular isso inexistente. É por isso que.bind
,.call
etc. não funciona com isso.this
é.Se você estiver usando no NodeJS, poderá definir o tempo limite no package.json
então você pode executar usando o npm como:
fonte
Na linha de comando:
fonte
Você também pode pensar em adotar uma abordagem diferente e substituir a chamada do recurso de rede por um stub ou objeto simulado. Usando o Sinon , você pode separar o aplicativo do serviço de rede, concentrando seus esforços de desenvolvimento.
fonte
Para navegação de teste em
Express
:No exemplo, o tempo de teste é 4000 (4s).
Nota:
setTimeout(done, 3500)
é menor pelo quedone
é chamado dentro do tempo do teste, masclearTimeout(timeOut)
evita que seja usado o tempo todo.fonte
Isso funcionou para mim! Não foi possível encontrar nada para fazer funcionar antes ()
fonte