在我的TypeScript测试中,我用一个助手扩展了柴。
import * as chai from 'chai';
chai.use((_chai) => {
let Assertion = _chai.Assertion;
Assertion.addMethod('sortedBy', function(property) {
// ...
});
});
const expect = chai.expect;
在同一文件中,测试用例使用此方法:
expect(tasks).to.have.been.sortedBy('from');
编译器给出的错误是“属性'sortedBy‘在类型’断言‘上不存在”。
如何将sortedBy
的声明添加到Chai.Assertion
我尝试过添加模块声明,就像其他柴插件模块一样,但它不起作用。
declare module Chai {
interface Assertion {
sortedBy(property: string): void;
}
}
我不想让助手成为一个单独的模块,因为它是微不足道的。
发布于 2016-02-29 07:00:13
尝试以下几点:
在chaiExt.ts中扩展chai如下:
declare module Chai
{
export interface Assertion
{
sortedBy(property: string): void;
}
}
在chaiConsumer.ts中消费:
import * as chai from 'chai';
//...
chai.expect(tasks).to.have.been.sortedBy('from');
编辑
如果使用“导入”--将文件转换为外部模块,则不支持声明合并:链接
发布于 2016-02-29 07:11:43
你的代码是正确的。默认情况下,将在TS上打开模块和接口,以便您可以重新声明和扩展它们。
通常,在这种情况下,我要做的是:在与我的项目相同的文件夹中创建一个globals.d.ts文件,以便自动加载.d.ts,然后像您一样添加类型定义。
declare module Chai {
interface Assertion {
sortedBy(property: string): void;
}
}
https://stackoverflow.com/questions/35695403
复制相似问题