Estoy ejecutando mis pruebas en una cadena privada y algunas de ellas se agotan:
1) "before all" hook:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
Traté de establecer el tiempo de espera para toda la prueba o para la parte anterior según la documentación de mocha:
contract("looong tests", accounts => {
this.timeout();
o
before( done => {
this.timeout(40000);
Recibí este error:
1) "before all" hook:
TypeError: _this.timeout is not a function
Agregar el parámetro de línea de comando -t no parece tener ningún efecto:
truffle test myTest.js -t 40000
truffle test myTest.js --timeout 40000
Veo una solución pendiente antigua en truffle: https://github.com/trufflesuite/truffle/issues/261
¿Cómo puedo aumentar el tiempo de espera para la declaración anterior?
Agregar tiempo de espera a los casos de prueba individuales funciona, pero no para antes de la declaración :(
it('one long test', () => {
....
}).timeout(40000 );
EDITAR: tengo una solución por ahora, moví el código de antes a la primera prueba que hice sincronizar:
it('should go to before block but can't set timeout there', done => {
new Promise( async function (resolve, reject) {
// my before code
resolve();
}).then( res => {
done();
});
}).timeout(40000 );
Agregue esto en su archivo de configuración de Truffle ( truffle.js
o truffle-config.js
):
mocha: {
enableTimeouts: false,
before_timeout: 120000 // Here is 2min but can be whatever timeout is suitable for you.
}
Si desea conservar los tiempos de espera (e incluso configurar diferentes tiempos de espera para diferentes pruebas), simplemente siga las instrucciones aquí .
Como enmienda a la respuesta proporcionada por goodvibration: importa dónde coloca ese fragmento de código dentro de truffle.js
. Para mí, solo funcionó dentro del module.exports
nivel más alto (no dentro de otras cosas como networks
).
Esto es lo que funcionó para mí:
module.exports = {
mocha: {
enableTimeouts: false
}
};
Las opciones para Mocha parecen tener cambios con más frecuencia de lo esperado.
A partir de Truffle v5.1.9, el Mocha utilizado es v5.2.0, y las opciones para la Mocha
clase se pueden encontrar en el código fuente que se encuentra aquí: https://github.com/mochajs/mocha/blob/v5.2.0/lib /mocha.js#L83
Hay opciones como las siguientes
enableTimeouts
- booleano, ¿Habilitar tiempos de espera?timeout
- número|cadena, especificar umbral de tiempo de espera de prueba (en milisegundos)bail
- booleano, ¿Bail después de la falla de la primera prueba?retries
- número, vuelva a intentar las pruebas fallidas tantas vecesLa versión posterior de Truffle puede usar una versión superior de Mocha. Entonces, será mejor que verifique el cambio de opciones en la fuente de GitHub anterior cambiando las etiquetas.
no se puede acceder this
desde una () => {}
función de estilo. Si desea usar this.timeout()
en el bloque anterior, debe hacer un
before(function() {
...
});
Nicolás Massart
buena vibración
Nicolás Massart
buena vibración
mocha
en el lugar equivocado dentro de su archivo de configuración de Truffle. O posiblemente podría tener dos archivos de configuración,truffle.js
o bientruffle-config.js
, Truffle sería predeterminado para el primero, pero ha agregadomocha
al último.buena vibración
Nicolás Massart
buena vibración
Nicolás Massart
Nicolás Massart
buena vibración
before_timeout
posiblemente se agregó en una versión más reciente de Mocha, utilizada por una versión más reciente de Truffle, que posiblemente esté usando (¿5.x?). Al momento de escribir esta respuesta, la versión de Truffle era 4.x.Nicolás Massart