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í.
