Как chai может показать ошибку теста, используя функцию ожидаемого? - PullRequest
0 голосов
/ 13 мая 2019

Ошибка подтверждения в chai не сообщает о том, что тест не пройден.

Я пытался использовать assert вместо ожидаемого.Я попытался вызвать тестовый сбой, пропустив символ в ожидаемом значении.

const axios = require('axios');
var assert = require('assert');
var expect = require('chai').expect;

describe('Tests', function() {
    describe('#indexOf()', function() {
        it('should return -1 when the value is not present', function() {
            assert.equal([1, 2, 3].indexOf(4), -1);
        });
        it('should return 1 when index is 2', function () {
           assert.equal([1, 2, 3].indexOf(3), 2)
        });
    });

    describe('#http-get', function () {
        it('should be https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg', function () {
           axios.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY')
                .then(response => {
                    // assert.equal(response.data.url, 'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg');
                    expect(response.data.url).to.equal('https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jp');
                })
                .catch(error => {
                    console.log(error);
                });
        });
    });
});

Я ожидал, что на выходе будет проходить состояние 2 и 1 не пройден, но я вижу следующий вывод, где 3-е утверждение помечено как проходящее, но ошибка подтверждения печатается.

  Tests
    #indexOf()
      ✓ should return -1 when the value is not present
      ✓ should return 1 when index is 2
    #http-get
      ✓ should be https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg


  3 passing (34ms)

{ AssertionError: expected 'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg' to equal 'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jp'
    at axios.get.then.response (/Users/adityai/nodejs-workspace/axios-sample/test/axios-sample-test.js:20:50)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  message: 'expected \'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg\' to equal \'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jp\'',
  showDiff: true,
  actual: 'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg',
  expected: 'https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jp' }

1 Ответ

1 голос
/ 13 мая 2019

Независимо от того, используете ли вы expect или assert, chai выдает ошибку, когда утверждение не выполнено.Вы должны НЕ обработать ошибку, потому что Mocha зависит от ошибки, чтобы определить, должен ли тестовый случай потерпеть неудачу.

Кроме того, если ваш тестовый случай асинхронный, не забудьте вернуть обещание или вызватьdone обратный вызов после завершения асинхронной задачи.

describe('#http-get', function () {
  it('should be https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jpg', function () {
    return axios.get('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY')
      .then(response => {
        expect(response.data.url).to.equal('https://apod.nasa.gov/apod/image/1905/volcano_stefnisson_960.jp')
      })
      // .catch(error => {
      //   console.log(error);
      // })
    })
})
...