Сбой теста мокко в блоке улова отклоненного обещания - PullRequest
0 голосов
/ 26 августа 2018

Как не выполнить тест в блоке catch отказа от обещания при выполнении http-вызова с использованием axios?Добавление ожиданий, утверждает, если выражения в блоке catch не помогают.Тест пройден.

Я запускаю с использованием .\node_modules\.bin\mocha

let chai = require('chai');
var expect = chai.expect;

var axios = require('axios')
var instance = axios.create({})

    describe('test', () => {

        context('test', () => {

        it('should succeed', () => {
            let url = 'url'
            instance.get(url)
                    .then(function(response) {
                        expect(response.data).not.to.be.null
                    } )
                    .catch(function(err) {
                        console.error(err.data) 
                        // should fail the test                                          
                    })


        })

        })
    })

1 Ответ

0 голосов
/ 26 августа 2018

Если вы хотите проверить мои предложения, замените значение URL на действительный URL (например: https://google.com)

. Вы можете попробовать несколько способов:

1) Использование assert.fail()

const axios = require('axios');
const { assert, expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
  context('test', () => {
    it('should succeed', () => {
      let url = 'abc'
      return instance.get(url)
        .then((res) => { 
          expect(res.data).not.to.be.null;
        })
        .catch((err) => {
          assert.fail('expected', 'actual', err);
        });
    });
  });
});

2) Использование done () с объектом ошибки

const axios = require('axios');
const { expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
  context('test', () => {
    it('should succeed', (done) => {
      let url = 'abc'
      instance.get(url)
        .then((res) => { 
          expect(res.data).not.to.be.null;
          done();
        })
        .catch((err) => {
          done(err);
        });
    });
  });
});

3) Просто выведите ошибку :)

const axios = require('axios');
const { expect } = require('chai');

const instance = axios.create({})

describe('test', () => {
  context('test', () => {
    it('should succeed', () => {
      let url = 'abc'
      return instance.get(url)
        .then((res) => { 
          expect(res.data).not.to.be.null;
        })
        .catch((err) => {
          throw err;
        });
    });
  });
})

Если вы хотите проверить, не завершился ли этот метод вообще, и ожидаете ли вы этого, идите по этому пути (для этого требуется пакет chai-as-обещанный):

const axios = require('axios');
const chai = require('chai');

chai.use(require('chai-as-promised'));
const instance = axios.create({})

describe('test', () => {
  context('test', () => {
    it('should succeed', () => {
      let url = 'abc'
      return chai.expect(instance.get(url)).to.be.rejected;
    });
  });
});
...