Відповіді:
У 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 (наприклад, 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. Дивовижно, що, ледь п’ять чи шість рядків, цей код забезпечує великий рівень потужності та контролю над вашим кодом під час тестування.
Функція затвердження приймає два параметри:
результат: Булевий, який посилається на те, пройшов ваш тест чи провалився
Опис: Короткий опис вашого тесту.
Потім функція затвердження просто створює елемент списку, застосовує клас або "пройти", або "провалити", залежно від того, повернувся ваш тест істинним або хибним, а потім додає опис до елемента списку. Нарешті, цей кодований блок додається на сторінку. Це божевільно просто, але працює чудово.
Ось дійсно проста реалізація функції затвердження. Він займає значення та опис того, що ви тестуєте.
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');
Якщо твердження помилкове, відображається повідомлення. Зокрема, якщо перший аргумент помилковий, другий аргумент (рядкове повідомлення) буде записаний у консоль інструментів розробника. Якщо перший аргумент правдивий, в основному нічого не відбувається. Простий приклад - я використовую Інструменти для розробників Google:
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 - це короткий спосіб доручити програмі перевірити стан (також званий "твердження"), і якщо умова не відповідає дійсності, вона призведе до помилки.
Тож давайте подивимось, як це виглядатиме у "звичайному коді"
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/
Я сподіваюся, що це допомагає.
Твердження видає повідомлення про помилку, якщо перший атрибут помилковий, а другий атрибут - це повідомлення, яке потрібно викинути.
console.assert(condition,message);
Є багато коментарів, які стверджують, що твердження не існує в JavaScript, але console.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 бібліотеку затвердження . Хоча вони стверджують, що "не призначена бути бібліотекою тверджень загального призначення", схоже, це є більш ніж нормальним для спеціальних тверджень, і, здається, жодного конкурента в просторі Вузла немає (Чай призначений для тестування одиниць).
const assert = require('assert');
...
assert(jqXHR.status == 201, "create response should be 201");
Вам потрібно скористатися вебпакетом або переглядати веб-переглядач, щоб мати можливість використовувати це, тому очевидно, це корисно лише тоді, коли вони вже є у вашому робочому процесі.
Крім інших варіантів, таких як console.assert або прокатка власних , ви можете використовувати інваріант . У ньому є кілька унікальних особливостей:
%s
специфікатора).Як згадував TJ, assert
у JavaScript немає . Однак є модуль вузла з назвою assrt , який використовується в основному для тестування . Отже, ви можете побачити код на зразок:
const assert = require('assert');
assert(5 > 7);
assert
.