Я пытаюсь использовать пакет 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 ... и т. д.
Как я могу это сделать?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, вы упускаете из виду «.eventually» или «.become» в утверждении. Попробуйте переписать его как
expect(myClass.getHomePage(req, res)).to.eventually.be.fulfilled;
Просто импортируйте chai-as-promised по умолчанию, и все будет работать:
import * as chai from 'chai'
import chaiAsPromised from 'chai-as-promised'
chai.use(chaiAsPromised)
Вы можете написать так
import { use as chaiUse } from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
chaiUse(chaiAsPromised);
Я думаю, что этот ответ - это то, что вам нужно:
Add the types for
chai-as-promisedand that should take care of the TypeScript errors:
npm install --save-dev @types/chai-as-promised
Работал у меня. Раньше я получал «Свойство« в конечном итоге »не существует для типа« Утверждение ».»; после добавления этого все остались довольны :-)
Мне сделал нужно поменять свой import на require.
До:
import chaiAsPromised from 'chai-as-promised';
После:
import chaiAsPromised = require('chai-as-promised');
Я еще не понимаю, как это должно работать, но добавление
""в качестве первого аргумента делает Typescript счастливым.