Vyhledávání na webu

typescript - Jak přidat typy k klíčovému slovu „this“ v testech mocha?


Inicializuji nějaká asynchronní data v mých testech Mocha pomocí funkce zpožděné kořenové sady.

V mém nejvyšším beforeEach vytvářím některé objekty se specifickými typy a ukládám je do objektu this. V dětských testovacích souborech v it blocích používám this, abych zabránil opakování kódu nespočetněkrát, ale tímto způsobem ztrácím typování:

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

Abych je získal zpět (zejména funkci automatického doplňování), musím přidat další řádek kódu:

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

Vím, že bych to mohl udělat inline pomocí přetypování v závorkách, přesto bych raději to nedělal.

Existuje nějaký způsob, jak definovat typy pro objekt vlastníka „this“ u všech funkcí testovacího balíčku?

Odpověď č. 1

Můžete rozšířit rozhraní Context v Mocha a deklarovat své další vlastnosti testovacího kontextu.

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

Ve svých testovacích funkcích můžete přidat typovou informaci pro parametr this následujícím způsobem:

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

AKTUALIZACE

Výše uvedený kód se nespustí v režimu strict (error TS2769: No overload matches this call.). Viz https://stackoverflow.com/a/62283449/69868 pro alternativní řešení.

Související články