Как использовать chai-as-promised с 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... и т. д.

Как я могу это сделать?


person Tchoupinax    schedule 18.11.2018    source источник
comment
Я еще не понимаю, как это должно работать, но добавление "" в качестве первого аргумента делает Typescript счастливым   -  person Tchoupinax    schedule 21.04.2021


Ответы (4)


Просто импортируйте значение по умолчанию chai-as-promised и все будет работать:

import * as chai from 'chai'    
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)
person Fred Policarpo    schedule 29.09.2020

Вы можете написать так

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

chaiUse(chaiAsPromised);

person Yeshi    schedule 17.05.2021

Я думаю, что этот ответ вам нужен:

Добавьте типы для 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');
person Frans    schedule 06.07.2021

Я думаю, что в утверждении вам не хватает «.Eventually» или «.become». Попробуйте переписать как

expect(myClass.getHomePage(req, res)).to.eventually.be.fulfilled;
person Jzop    schedule 28.11.2018