Búsqueda de sitios web

typescript - ¿Cómo agregar tipos a la palabra clave "this" en las pruebas de mocha?


Estoy inicializando algunos datos asíncronos en mis pruebas de mocha usando la funcionalidad de suite raíz demorada.

En mi beforeEach más alto, estoy creando algunos objetos con tipos específicos y los almaceno en el objeto this. En los archivos de prueba hijos en los conjuntos de it, estoy usando this para evitar duplicar el código una cantidad innumerable de veces, pero estoy perdiendo las tipificaciones al hacerlo:

it("should do something", async function() {
  await this.token.approve(account, amount);
});

Para recuperarlos (particularmente la funcionalidad de autocompletado), tengo que añadir una línea adicional de código:

const token: Erc20 = this.token;
await token.approve(account, amount);

Sé que podría hacer esto en línea haciendo una conversión con paréntesis, pero preferiría no hacerlo.

¿Hay alguna manera de definir los tipos para el objeto propietario "this" de todas las funciones del conjunto de pruebas?

Respuesta #1

Puedes extender la interfaz Context de Mocha y declarar tus propiedades adicionales de contexto de prueba.

interface MyContext extends Mocha.Context {
  token: Erc20;
}

En tus funciones de prueba, puedes agregar información de tipo para el parámetro this de la siguiente manera:

it('should do something', async function(this: MyContext) {
  await this.token.approve();
});

ACTUALIZACIÓN

El código anterior no se compila en modo strict (error TS2769: Ninguna sobrecarga coincide con esta llamada.). Vea https://stackoverflow.com/a/62283449/69868 para una solución alternativa.

Artículos relacionados