如何将Chai-as-Promise与Typescript一起使用?

时间:2018-11-18 18:18:12

标签: javascript typescript unit-testing chai chai-as-promised

我正在尝试将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([]);
      });
  });
});

此代码存在以下错误:

enter image dedscription here

...它指出了这一点:

interface PromisedTypeComparison {
    (type: string, message?: string): PromisedAssertion; // <<-- 
    instanceof: PromisedInstanceOf;
    instanceOf: PromisedInstanceOf;
}

我测试了很多机会,这是我认为最接近解决方案的机会。

我想使用chai-as-promisefullfulled ...之类的rejected函数。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

只需导入默认值 Product Year Period Sales 0 1 2000 Jan-Feb 2 1 1 2000 Mar-Apr 1 2 1 2001 Jan-Feb 4 3 1 2001 Mar-Apr 2 4 2 2001 Jan-Feb 2 5 2 2001 Mar-Apr 1 6 2 2002 Jan-Feb 4 7 2 2002 Mar-Apr 6 ,一切正常:

chai-as-promised

答案 1 :(得分:2)

我认为 this answer 是您所需要的:

<块引用>

添加 types for 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');

答案 2 :(得分:1)

你可以这样写

import { use as chaiUse } from 'chai';
import * as chaiAsPromised from 'chai-as-promised';

chaiUse(chaiAsPromised);

答案 3 :(得分:0)

我认为您在断言中丢失了“。最终”或“。成为”。 尝试将其重写为

expect(myClass.getHomePage(req, res)).to.eventually.be.fulfilled;