Chai Mocha Test Promise Свойство «в конце концов» не существует - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь использовать тест Chai Promise, но он показывает ошибку Я использую докер.

Здесь простая функция

            let funcPromise = (n) => {
                return new Promise((resolve, reject) =>{
                    if(n=="a") {
                        resolve("success");
                    }else {
                        reject("Fail")
                    }
                })
            }

простой тест

            import chai from 'chai';
            var chaiAsPromised = require('chai-as-promised');
            chai.use(chaiAsPromised);
            let expect = chai.expect;
            let assert = chai.assert;               

            it('connect: test promise', (done) => {
                let func = funcPromise("a");
                expect(func).to.eventually.equal("success"); // dont work
                expect(func).to.be.rejected; // dont work
            })

Ошибка на терминале FileTest.spec.ts:43:25 - error TS2339: Property 'eventually' does not exist on type 'Assertion'.

storage/database/MongooseEngine.spec.ts:44:35 - error TS2339: Property 'rejected' does not exist on type 'Assertion'.

1 Ответ

1 голос
/ 25 апреля 2019

Ошибка TypeScript, который жалуется на то, что не знает о дополнениях, которые chai-as-promised вносит в chai утверждения.

Добавьте типы для chai-as-promised, и это должно устранить ошибки TypeScript:

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

Вы также захотите await любые утверждения, сделанные с помощью chai-as-promised:

import chai from 'chai';
import chaiAsPromised from 'chai-as-promised';
chai.use(chaiAsPromised);
const expect = chai.expect;

const funcPromise = (n) => new Promise((resolve, reject) => {
  if (n === 'a') { resolve('success'); }
  else { reject('fail'); }
});

it('connect: test promise', async () => {
  await expect(funcPromise('a')).to.eventually.equal('success');  // Success!
  await expect(funcPromise('b')).to.be.rejected;  // Success!
});
...