我正在使用delayed root suite功能在我的Mocha测试中初始化一些异步数据。
在最上面的beforeEach
中,我正在创建一些具有特定类型的对象,并将它们存储在this对象中。在it
套件的子测试文件中,我正在使用this
避免无数次重复代码,但是这样做却丢失了键入内容:
it("should do something", async function() {
await this.token.approve(account, amount);
});
要取回它们(特别是自动完成功能),我必须添加另一行代码:
const token: Erc20 = this.token;
await token.approve(account, amount);
我知道我可以通过用括号进行强制转换来内联地执行此操作,但我宁愿不这样做。
有没有办法为所有测试套件功能的“ this”所有者对象定义类型?
您可以扩展Mocha的Context
接口并声明其他测试上下文属性。
interface MyContext extends Mocha.Context {
token: Erc20;
}
在测试功能中,可以如下添加this
参数的类型信息:
it('should do something', async function(this: MyContext) {
await this.token.approve();
});
UPDATE
以上代码在strict
模式下无法编译(error TS2769: No overload matches this call.
),请参见https://stackoverflow.com/a/62283449/69868以获取替代解决方案。