[英]How to use chai-as-promised with Typescript?
我正在尝试将chai-as-promised
包与 TypeScript 一起使用。 首先,以下代码在简单的 JavaScript 中运行良好。
import * as chai from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
chai.use(chaiAsPromised);
const expect = chai.expect;
import * as sinon from 'sinon';
import { MyClass } from '.';
describe('Test my class', () => {
let myClass: MyClass;
beforeEach(() => {
myClass = new MyClass();
});
it('Should render home', () => {
const req = new RequestMock();
const res = new ResponseMock();
return expect(myClass.getHomePage(req, res)).to.be.fulfilled()
.then((returnedValue) => {
chai.expect(returnedValue).to.not.be.equal([]);
});
});
});
这段代码出现以下错误:
...它指出了这一点:
interface PromisedTypeComparison {
(type: string, message?: string): PromisedAssertion; // <<--
instanceof: PromisedInstanceOf;
instanceOf: PromisedInstanceOf;
}
我测试了很多机会,这是我最接近我认为的解决方案的机会。
我想使用chai-as-promise
功能,如fullfulled
, rejected
... 等。
我怎样才能做到?
只需导入chai-as-promised
的默认值,一切都会正常工作:
import * as chai from 'chai'
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)
我认为这个答案正是你所需要的:
添加
chai-as-promised
的类型,这应该处理 TypeScript 错误:
npm install --save-dev @types/chai-as-promised
为我工作。 之前,我收到“‘断言’类型上不存在‘最终’属性。”; 添加此后,每个人都很高兴:-)
我确实必须将import
更改为require
。
前:
import chaiAsPromised from 'chai-as-promised';
后:
import chaiAsPromised = require('chai-as-promised');
你可以这样写
import { use as chaiUse } from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
chaiUse(chaiAsPromised);
我认为您在断言中缺少“.eventually”或“.become”。 尝试将其重写为
expect(myClass.getHomePage(req, res)).to.eventually.be.fulfilled;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.