Что assert
значит в JavaScript?
Я видел что-то вроде:
assert(function1() && function2() && function3(), "some text");
И хотел бы знать, что assert()
делает метод .
источник
Что assert
значит в JavaScript?
Я видел что-то вроде:
assert(function1() && function2() && function3(), "some text");
И хотел бы знать, что assert()
делает метод .
В assert
JavaScript его нет (пока; говорят о его добавлении , но это на ранней стадии). Возможно, вы используете какую-то библиотеку, которая ее предоставляет. Обычный смысл - выбросить ошибку, если переданное в функцию выражение ложно; это часть общей концепции проверки утверждений . Обычно утверждения (как они называются) используются только в «тестовых» или «отладочных» сборках и удаляются из производственного кода.
Предположим, у вас есть функция, которая должна всегда принимать строку. Вы хотели бы знать, вызывал ли кто-то эту функцию с чем-то, что не было строкой. Так что вы можете сделать:
assert(typeof argumentName === "string");
... где assert
бы выкинуть ошибку, если бы условие было ложным.
Очень простая версия будет выглядеть так:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Еще лучше использовать Error
объект, если движок JavaScript его поддерживает (на самом деле старые могут этого не ), что дает преимущество сбора трассировки стека и тому подобное:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Даже у IE8 есть Error
(хотя у него нет stack
свойства, но у современных движков [включая современный IE] есть).
assert
.if(!condition)
устанавливаетvar throwError=true;
тоdebugger;
затем обернуть участок бросить вif(throwError)
. Таким образом, если у меня будет открыт отладчик, он сломается, и, если я так захочу, я могу установитьthrowError
значение false, а затем проверить все области при выходе.throw
. Таким образом, вам не нужноdebugger;
утверждение. См. Developer.chrome.com/devtools/docs/… для получения дополнительной информации.if
на условный оператор. Во всяком случае, в современном мире я бы не стал поддерживать двигатели, которые не имеютError
.Если вы используете современный браузер или nodejs, вы можете использовать
console.assert(expression, object)
.Чтобы получить больше информации:
источник
console.error
на то, что код продолжает выполняться.console.assert
не так хорошо, если он не имеет такое же поведение, какthrow
.console.assert
, как утверждения не являются функциями обработки ошибок. Они предназначены для проверки правильности кода только во время разработки. Традиционно они полностью отключены в производственных средах, чтобы избежать прекращения работы живых систем из-за чего-то тривиального. Браузер считается производственной средой, поэтомуconsole.assert
его выполнение не прекращается. Если вы полагаетесь на утверждения, чтобы остановить выполнение, вам следует вместо этого использовать правильную обработку ошибок, поскольку это не то, для чего предназначены утверждения.Другие ответы хороши: в ECMAScript5 нет встроенной функции assert (например, JavaScript, который работает практически везде), но некоторые браузеры предоставляют ее вам или имеют надстройки, обеспечивающие эту функциональность. Хотя, вероятно, для этого лучше всего использовать хорошо зарекомендовавшую себя / популярную / поддерживаемую библиотеку, для академических целей функция «утверждение бедняка» может выглядеть примерно так:
источник
try
,catch
,throw
)assert()
не является родной функцией JavaScript. Это пользовательская функция, которую кто-то сделал. Вам нужно будет найти его на своей странице или в своих файлах и опубликовать его, чтобы кто-нибудь помог определить, что он делает.источник
Проверь это: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
это для тестирования JavaScript. Удивительно, что всего пять или шесть строк этого кода обеспечивают отличный уровень мощности и контроля над вашим кодом при тестировании.
Функция assert принимает два параметра:
результат: логическое значение, которое указывает, пройден ли ваш тест или нет
описание: краткое описание вашего теста.
Затем функция assert просто создает элемент списка, применяет класс «pass» или «fail», в зависимости от того, вернул ли ваш тест true или false, и затем добавляет описание к элементу списка. Наконец, этот блок кода добавляется на страницу. Это безумно просто, но работает отлично.
источник
Вот действительно простая реализация функции assert. Требуется значение и описание того, что вы тестируете.
Если значение оценивается как истинное, оно проходит.
Если он возвращает ложь, он терпит неудачу.
источник
Если утверждение ложно, отображается сообщение. В частности, если первый аргумент равен false, второй аргумент (строковое сообщение) будет зарегистрирован в консоли инструментов разработчика. Если первый аргумент верен, в принципе ничего не происходит. Простой пример - я использую Google Developer Tools:
источник
Вероятно, он поставляется с библиотекой тестирования, которую использует часть вашего кода. Вот пример одного (скорее всего, это не та библиотека, которую использует ваш код, но она показывает общую идею):
http://chaijs.com/guide/styles/#assert
источник
Слово или функция «assert» в основном используется при тестировании частей приложения.
Функции Assert - это короткий способ дать программе команду проверить условие (также называемое «утверждение»), и если условие не True, оно выдаст ошибку.
Итак, давайте посмотрим, как это будет выглядеть в «нормальном коде»
if (typeof "string" === "array") { throw Error('Error: "string" !== "array"'); }
С помощью
assert
можно просто написать:assert(typeof "string" === "array")
В Javascript нет родного
assert
функции, поэтому вы должны использовать ее из какой-то библиотеки.Для простого введения вы можете проверить эту статью:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Я надеюсь, что это помогает.
источник
Утверждение выдает сообщение об ошибке, если первый атрибут имеет значение false, а второй атрибут - это выбрасываемое сообщение.
Есть много комментариев, в которых говорится, что утверждение не существует в JavaScript, но
console.assert()
является функцией assert в JavaScript. Идея утверждения состоит в том, чтобы выяснить, почему / где возникает ошибка.Здесь, в зависимости от сообщения, вы можете найти ошибку. Эти сообщения об ошибках будут отображаться на консоли красным цветом, как если бы мы звонили.
console.error();
Чтобы увидеть больше функций в консоли, выполните
console.log(console);
источник
Предыдущие ответы могут быть улучшены с точки зрения производительности и совместимости.
Проверьте один раз, существует ли
Error
объект, если не объявите его:Затем каждое утверждение проверяет условие и всегда выбрасывает
Error
объектИмейте в виду, что консоль будет отображать не реальный номер строки ошибки, а строку
assert
функции, которая бесполезна для отладки.источник
Если вы используете Webpack, вы можете просто использовать Node.js библиотеку утверждения . Хотя они утверждают, что это «не предназначено для того, чтобы быть библиотекой утверждений общего назначения», кажется, что это более чем нормально для специальных утверждений, и кажется, что в любом случае в пространстве Node нет конкурента (Chai предназначен для модульного тестирования).
Вы должны использовать webpack или browserify, чтобы иметь возможность использовать это, поэтому очевидно, что это полезно, только если они уже есть в вашем рабочем процессе.
источник
В дополнение к другим параметрам, таким как console.assert или собственным , вы можете использовать invariant . У этого есть несколько уникальных особенностей:
%s
спецификатор).источник
Как упомянул TJ,
assert
в JavaScript нет. Тем не менее, существует модуль узла с именем assert , который используется в основном для тестирования . Итак, вы можете увидеть код как:источник