Распечатать информацию о том, какое свойство вызвало ошибку мокко AssertionError - PullRequest
0 голосов
/ 29 мая 2020

Учитывая следующий модульный тест:

var object = {
    a: [],
    b: [],
    c: null,
    d: [],
    e: []
};

describe('Multiple assertions', () => {
    it("Should be all arrays", (done) => {
        expect(object).to.have.property('a').that.is.a('array');
        expect(object).to.have.property('b').that.is.a('array');
        expect(object).to.have.property('c').that.is.a('array');
        expect(object).to.have.property('d').that.is.a('array');
        expect(object).to.have.property('e').that.is.a('array');
        done();
    });
});

Он правильно не работает на одном из свойств, не являющихся массивом, но из выходных данных неясно, какое свойство вызвало сбой теста:

  1) Multiple assertions
       Should be all arrays:
     AssertionError: expected null to be an array
      at Context.it (server/test/serverTest.js:27:48)

Может ли мокко распечатать более информативный вывод, как показано ниже?

For property 'c' expected null to be an array

Ответы [ 2 ]

0 голосов
/ 08 июня 2020

Думаю, я нашел элегантный способ сделать это благодаря этому сообщению:

Как предоставить chai expect с пользовательским сообщением об ошибке для модульного теста mocha?

Мой тест изменился следующим образом:

describe('Multiple assertions', () => {
    it("Should be all arrays", (done) => {
        expect(object, '"a" should be an array').to.have.property('a').that.is.a('array');
        expect(object, '"b" should be an array').to.have.property('b').that.is.a('array');
        expect(object, '"c" should be an array').to.have.property('c').that.is.a('array');
        expect(object, '"d" should be an array').to.have.property('d').that.is.a('array');
        expect(object, '"e" should be an array').to.have.property('e').that.is.a('array');
        done();
    });
});

Результат:

1) Multiple assertions
     Should be all arrays:
     AssertionError: "c" should be an array: expected null to be an array
at Context.it (server/test/serverTest.js:27:48)
0 голосов
/ 29 мая 2020

Вы всегда можете использовать try {} catch {} свои expect() функции и самостоятельно форматировать ошибку. Но я не уверен, что это оптимальный способ ответить на этот вопрос.

...