vida teoria operaciones modelos los lineas linea las investigacion estructura espera ejemplos cotidiana costo colas caracteristicas basica mocha

teoria - Cómo aumentar el tiempo de espera para un solo caso de prueba en mocha



lineas de espera ejemplos (7)

Aquí tienes: http://mochajs.org/#test-level

it(''accesses the network'', function(done){ this.timeout(500); [Put network code here, with done() in the callback] })

Para la función de flecha use de la siguiente manera:

it(''accesses the network'', (done) => { [Put network code here, with done() in the callback] }).timeout(500);

Estoy enviando una solicitud de red en un caso de prueba, pero a veces esto toma más de 2 segundos (el tiempo de espera predeterminado)

¿Cómo puedo aumentar el tiempo de espera para un solo caso de prueba?


Desde la línea de comando:

mocha -t 100000 test.js


Si desea utilizar las funciones de flecha de es6, puede agregar un .timeout(ms) al final de su definición de it :

it(''should not timeout'', (done) => { doLongThing().then(() => { done(); }); }).timeout(5000);

Al menos esto funciona en Typescript.


Si está utilizando en NodeJS, puede configurar el tiempo de espera en package.json

"test": "mocha --timeout 10000"

entonces puedes correr usando npm como:

npm test


También puede pensar en adoptar un enfoque diferente y reemplazar la llamada al recurso de red con un objeto auxiliar o simulado. Usando Sinon , puede desacoplar la aplicación del servicio de red, enfocando sus esfuerzos de desarrollo.


(Desde que me encontré con esto hoy)

Tenga cuidado al utilizar la sintaxis de la flecha grasa ES2015:

Esto fallará:

it(''accesses the network'', done => { this.timeout(500); // will not work // *this* binding refers to parent function scope in fat arrow functions! // i.e. the *this* object of the describe function done(); });

EDITAR: ¿Por qué falla:

Como @atoth menciona en los comentarios, las funciones de la flecha gorda no tienen su propia vinculación. Por lo tanto, no es posible que la función it se enlace a esto de la devolución de llamada y proporcione una función de tiempo de espera .

Línea inferior : no utilice las funciones de flecha para las funciones que necesitan un mayor tiempo de espera.


Para la prueba de navegación en Express :

const request = require(''supertest''); const server = require(''../bin/www''); describe(''navegation'', () => { it(''login page'', function(done) { this.timeout(4000); const timeOut = setTimeout(done, 3500); request(server) .get(''/login'') .expect(200) .then(res => { res.text.should.include(''Login''); clearTimeout(timeOut); done(); }) .catch(err => { console.log(this.test.fullTitle(), err); clearTimeout(timeOut); done(err); }); }); });

En el ejemplo, el tiempo de prueba es 4000 (4s).

Nota: setTimeout(done, 3500) es menor para lo que se llama dentro del tiempo de la prueba, pero clearTimeout(timeOut) se evita que se use todo este tiempo.