Ответы:
В 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] есть).
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, который работает практически везде), но некоторые браузеры предоставляют ее вам или имеют надстройки, обеспечивающие эту функциональность. Хотя, вероятно, для этого лучше всего использовать хорошо зарекомендовавшую себя / популярную / поддерживаемую библиотеку, для академических целей функция «утверждение бедняка» может выглядеть примерно так:
const assert = function(condition, message) {
if (!condition)
throw Error('Assert failed: ' + (message || ''));
};
assert(1 === 1); // Executes without problem
assert(false, 'Expected true');
// Yields 'Error: Assert failed: Expected true' in console
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. Требуется значение и описание того, что вы тестируете.
function assert(value, description) {
var result = value ? "pass" : "fail";
console.log(result + ' - ' + description);
};
Если значение оценивается как истинное, оно проходит.
assert (1===1, 'testing if 1=1');
Если он возвращает ложь, он терпит неудачу.
assert (1===2, 'testing if 1=1');
Если утверждение ложно, отображается сообщение. В частности, если первый аргумент равен false, второй аргумент (строковое сообщение) будет зарегистрирован в консоли инструментов разработчика. Если первый аргумент верен, в принципе ничего не происходит. Простой пример - я использую Google Developer Tools:
var isTrue = true;
var isFalse = false;
console.assert(isTrue, 'Equals true so will NOT log to the console.');
console.assert(isFalse, 'Equals false so WILL log to the console.');
Вероятно, он поставляется с библиотекой тестирования, которую использует часть вашего кода. Вот пример одного (скорее всего, это не та библиотека, которую использует ваш код, но она показывает общую идею):
Слово или функция «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, а второй атрибут - это выбрасываемое сообщение.
console.assert(condition,message);
Есть много комментариев, в которых говорится, что утверждение не существует в JavaScript, но console.assert()
является функцией assert в JavaScript. Идея утверждения состоит в том, чтобы выяснить, почему / где возникает ошибка.
console.assert(document.getElementById("title"), "You have no element with ID 'title'");
console.assert(document.getElementById("image"), "You have no element with ID 'image'");
Здесь, в зависимости от сообщения, вы можете найти ошибку. Эти сообщения об ошибках будут отображаться на консоли красным цветом, как если бы мы звонили. console.error();
Чтобы увидеть больше функций в консоли, выполнитеconsole.log(console);
Предыдущие ответы могут быть улучшены с точки зрения производительности и совместимости.
Проверьте один раз, существует ли Error
объект, если не объявите его:
if (typeof Error === "undefined") {
Error = function(message) {
this.message = message;
};
Error.prototype.message = "";
}
Затем каждое утверждение проверяет условие и всегда выбрасывает Error
объект
function assert(condition, message) {
if (!condition) throw new Error(message || "Assertion failed");
}
Имейте в виду, что консоль будет отображать не реальный номер строки ошибки, а строку assert
функции, которая бесполезна для отладки.
Если вы используете Webpack, вы можете просто использовать Node.js библиотеку утверждения . Хотя они утверждают, что это «не предназначено для того, чтобы быть библиотекой утверждений общего назначения», кажется, что это более чем нормально для специальных утверждений, и кажется, что в любом случае в пространстве Node нет конкурента (Chai предназначен для модульного тестирования).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
Вы должны использовать webpack или browserify, чтобы иметь возможность использовать это, поэтому очевидно, что это полезно, только если они уже есть в вашем рабочем процессе.
В дополнение к другим параметрам, таким как console.assert или собственным , вы можете использовать invariant . У этого есть несколько уникальных особенностей:
%s
спецификатор).Как упомянул TJ, assert
в JavaScript нет. Тем не менее, существует модуль узла с именем assert , который используется в основном для тестирования . Итак, вы можете увидеть код как:
const assert = require('assert');
assert(5 > 7);
assert
.