javascript - Hur använder man chai-as-promised med Typescript?


Jag försöker använda chai-as-promised-paketet med TypeScript. Först och främst fungerar följande kod bra i enkel 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([]);
      });
  });
});

Jag har följande fel med denna kod:

... och det pekade på detta :

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

Jag testade många möjligheter och det är den där jag verkar vara närmast lösningen.

Jag skulle vilja använda funktioner från chai-as-promise som fulfilled, rejected... osv.

Hur kan jag göra det?

Svar #1

Jag tror att detta svar är vad du behöver:

Lägg till typerna för chai-as-promised och det borde ta hand om TypeScript-felen:

npm install --save-dev @types/chai-as-promised

Fungerade för mig. Före det fick jag "Property 'eventually' finns inte på typen 'Assertion'."; efter att ha lagt till detta var alla nöjda :-)

Jag var tvungen att ändra min import till en require.

Före :

import chaiAsPromised from 'chai-as-promised';

Efter :

import chaiAsPromised = require('chai-as-promised');

Svar #2

Importera bara standarden av chai-as-promised så kommer allt att fungera:

import * as chai from 'chai'    
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)

Relaterade artiklar