typescript - mocha testlerinde "this" anahtar kelimesine nasıl tip eklenir?
Mocha testlerimde gecikmeli kök suite işlevini kullanarak bazı asenkron verileri başlatıyorum.
En üst düzey beforeEach bloğumda, belirli türlerde bazı nesneler oluşturuyorum ve bunları this nesnesinde saklıyorum. Alt test dosyalarındaki it bloklarında, kodu sayısız kez çoğaltmamak için this kullanıyorum, ancak bunu yaparken tür bilgilerini kaybediyorum:
it("should do something", async function() {
await this.token.approve(account, amount);
});
Onları geri almak için (özellikle otomatik tamamlama işlevselliğini), ek bir kod satırı eklemem gerekiyor:
const token: Erc20 = this.token;
await token.approve(account, amount);
Bunu parantezle dönüştürerek satır içinde yapabileceğimi biliyorum, ancak bunu yapmamayı tercih ederim.
Tüm test seti fonksiyonlarının "this" sahip nesnesi için türleri tanımlamanın herhangi bir yolu var mı?
Cevap #1
Mocha'nın Context arayüzünü genişletebilir ve ek test-bağlamı özelliklerinizi tanımlayabilirsiniz.
interface MyContext extends Mocha.Context {
token: Erc20;
}
Test fonksiyonlarınızda, this parametresi için tür bilgisini şu şekilde ekleyebilirsiniz:
it('should do something', async function(this: MyContext) {
await this.token.approve();
});
GÜNCELLEME
Yukarıdaki kod strict modda derlenmez (error TS2769: No overload matches this call.). Alternatif bir çözüm için https://stackoverflow.com/a/62283449/69868 adresine bakın.
