Установить пользовательское сообщение об ошибке для Assert (Node.js) - PullRequest
0 голосов
/ 02 июля 2018

Я потерян в документации по Node, и мне трудно понять, как я могу создать собственную (или модифицировать существующую) обработку ошибок для всех моих утверждений assert без необходимости включать отдельные сообщения в каждое утверждение.

const assert = require('assert');

describe('Test 1', function(){
  describe('Checks State', function(){
    it('will fail', function(){
        assert.strictEqual(true, false);
    });
  });
});

Как и ожидалось, предыдущий код просто сгенерирует что-то вроде:

1) "Test 1 Checks State will fail"
true === false

Я работаю с WebDriverIO, и моя цель состоит в том, чтобы включить browser.sessionId в сообщение об ошибке, без необходимости вручную вводить третий (сообщение) параметр в каждом тесте.

assert.strictEqual(true, false, browser.sessionId);

Было бы идеально, если бы я мог сгенерировать сообщение об ошибке вроде:

1) "Test 1 Checks State will fail"
abc012-efg345-hij678-klm901
true !== false

Я прошу прощения, я знаю, что должен включить "то, что я сделал до сих пор" - но все, что я сделал до сих пор, не оказало никакого влияния. И снова я заблудился в документации по узлу:)

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

мой ответ

const assert = require('assert');
describe('Set Custom Error Message for Assert (Node.js)', () => {
    it('Message Assert', () => {
       assert.fail(21, 42, 'This is a message custom', '##');
    });
});

Ссылка

0 голосов
/ 02 июля 2018

Вы не можете, не вмешиваясь в 3 rd party lib assert

За кулисами используется функция fail, которая является конфиденциальной в контексте assert, и вы не можете указать assert использовать пользовательскую функцию fail.

эта функция используется за кулисами:

function fail(actual, expected, message, operator, stackStartFunction) {
  throw new assert.AssertionError({
    message: message,
    actual: actual,
    expected: expected,
    operator: operator,
    stackStartFunction: stackStartFunction
  });
}

Таким образом, у вас есть три варианта:

  1. (рекомендуется) Разветвить библиотеку на github . Реализуйте или некоторые наблюдатели, такие как onFail, или разрешите его расширение и создайте запрос на извлечение.

  2. (не рекомендуется) Перезаписать функцию fail в файле node_modules\assert\assert.js самостоятельно, чтобы, помимо запуска обычных вещей, она делала то, что вам нужно.

    Будучи быстрым, это навсегда нарушит зависимость.

  3. Найдите другие библиотеки утверждений (если они есть),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...