Pau*_*erg 3 types mocha.js typescript
采取以下代码片段:
import { Foo } from "./foo";
export interface MyContext extends Mocha.Context {
foo: Foo;
}
Run Code Online (Sandbox Code Playgroud)
这是在安装了@types/mocha包的项目中,以便Mocha编译器可以推断命名空间。
现在,如果我尝试在测试套件中使用此接口:
import { MyContxt } from "../types/mocha";
describe("my test suite", function() {
it("should do something", function(this: MyContext) {
...
});
});
Run Code Online (Sandbox Code Playgroud)
TypeScript 编译器抛出以下错误:
没有重载与此调用匹配。
我查找了源代码,似乎 mocha 期望传递给before、beforeEach、it等钩子的任何函数都链接到Context中定义的类型@types/mocha- 它不接受任何后代类型。
如何解决这个问题并在我的测试环境中扩展 Mocha Context 接口?
使用该派生接口从字面上扩展 mocha 的Context类型并不是您想要在此处执行的操作。相反,您想要扩充库定义的类型,添加您的成员。
这可以通过以下方式完成:
// augmentations.d.ts
import {Foo} from './foo';
declare module "mocha" {
export interface Context {
foo: Foo;
}
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
describe("my test suite", function () {
it("should do something", function () {
console.log(this.foo);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |