如何在Mocha测试中向“ this”关键字添加类型?

问题描述 投票:1回答:1

我正在使用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”所有者对象定义类型?

typescript types mocha this
1个回答
1
投票

您可以扩展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以获取替代解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.