У обычных утверждений есть мощная альтернатива: power-assert. Эта библиотека добавляет магию в привычный инструмент.
Вот пример проверки с использованием стандартного модуля assert:
const user = {
name: 'Madonna',
friends: ['Kate', 'Michel'],
email: 'madonna@example.com',
};
assert(user.name === 'Michel');
// AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
// assert(user.name === 'Michel')
В выводе видно само утверждение и результат проверки. Но непонятно, что за объект user
и какая у него структура. Для получения этой информации придётся включаться в отладку. Но вместо этого можно воспользоваться библиотекой power-assert:
import assert from 'power-assert';
// Весь код остаётся тем же самым
const user = {
name: 'Madonna',
friends: ['Kate', 'Michel'],
email: 'madonna@example.com',
};
// Интерфейс библиотеки power-assert на 100% совместим со встроенным модулем assert.
assert(user.name === 'Michel');
И посмотреть вывод:
AssertionError [ERR_ASSERTION]: # test.js:10
assert(user.name === 'Michel')
| | |
| | false
| "Madonna"
Object{name:"Madonna",friends:#Array#,email:"madonna@example.com"}
--- [string] 'Michel'
+++ [string] user.name
@@ -1,6 +1,7 @@
M
-ichel
+adonna
Попробуйте остановиться и внимательно изучить этот вывод. Что здесь показано? power-assert облегчает отладку настолько, насколько это вообще физически возможно. Он показывает значение каждого объекта и результат каждой операции, входящей в выражение, переданное в функцию assert. Кроме того, в конце он сравнивает строки и говорит, в чём конкретно было различие между ними.
Вот ещё один интересный пример из документации:
import assert from 'power-assert';
const array = [1, 2, 3];
const zero = 0;
const two = 2;
assert(array.indexOf(zero) === two);
// AssertionError [ERR_ASSERTION]: # test.js:7
//
// assert(array.indexOf(zero) === two)
// | | | | |
// | | | | 2
// | -1 0 false
// [1,2,3]
//
// [number] two
// => 2
// [number] array.indexOf(zero)
// => -1
Впечатляет? Большинство современных фреймворков не выдаёт настолько удобный вывод, насколько это делает power-assert. Его можно интегрировать с чем угодно, но потребуются дополнительные инструменты, чтобы получить такое отображение - это Babel / Webpack или другие библиотеки, указанные в документации. Пример использования power-assert с Babel:
https://repl.it/@hexlet/js-testing-power-asserts-methods#index.test.js
Вам ответят команда поддержки Хекслета или другие студенты.
Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
Статья «Ловушки обучения»
Вебинар «Как самостоятельно учиться»
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт