Co assert
oznacza JavaScript?
Widziałem coś takiego:
assert(function1() && function2() && function3(), "some text");
I chciałbym wiedzieć, co assert()
robi metoda .
źródło
Co assert
oznacza JavaScript?
Widziałem coś takiego:
assert(function1() && function2() && function3(), "some text");
I chciałbym wiedzieć, co assert()
robi metoda .
assert
JavaScript nie ma (jeszcze; mówi się o dodaniu jednego , ale jest na wczesnym etapie). Być może korzystasz z biblioteki, która ją udostępnia. Zwykle oznacza rzucanie błędu, jeśli wyrażenie przekazane do funkcji jest fałszywe; jest to część ogólnej koncepcji sprawdzania asercji . Zazwyczaj asercje (jak się je nazywa) są używane tylko w kompilacjach „testujących” lub „debugujących” i usuwane z kodu produkcyjnego.
Załóżmy, że masz funkcję, która zawsze powinna akceptować ciąg. Chcesz wiedzieć, czy ktoś wywołał tę funkcję z czymś, co nie było łańcuchem. Więc możesz zrobić:
assert(typeof argumentName === "string");
... gdzie assert
rzuci błąd, jeśli warunek będzie fałszywy.
Bardzo prosta wersja wyglądałaby tak:
function assert(condition, message) {
if (!condition) {
throw message || "Assertion failed";
}
}
Jeszcze lepiej, skorzystaj z Error
obiektu, jeśli silnik JavaScript go obsługuje (tak naprawdę stare nie mogą), co ma tę zaletę, że gromadzi ślad stosu i takie:
function assert(condition, message) {
if (!condition) {
message = message || "Assertion failed";
if (typeof Error !== "undefined") {
throw new Error(message);
}
throw message; // Fallback
}
}
Nawet IE8 ma Error
(chociaż nie ma tej stack
właściwości, ale nowoczesne silniki [w tym współczesne IE] mają).
assert
.if(!condition)
ustawieniach,var throwError=true;
adebugger;
następnie zawiń sekcję rzucania wif(throwError)
. W ten sposób, jeśli mam otwarty debugger, pęknie, a jeśli zechcę, mogę ustawić wartośćthrowError
false, a następnie sprawdzić wszystkie zakresy podczas wychodzenia.throw
. W ten sposób nie potrzebujeszdebugger;
oświadczenia. Więcej informacji znajdziesz na stronie developer.chrome.com/devtools/docs/… .if
na operatora warunkowego. W każdym razie w dzisiejszym świecie nie zawracałbym sobie głowy obsługą silników, które tego nie mająError
.Jeśli używasz nowoczesnej przeglądarki lub nodejs, możesz użyć
console.assert(expression, object)
.Po więcej informacji:
źródło
console.error
że kod nadal się wykonuje.console.assert
nie jest tak dobry, chyba że ma takie samo zachowanie jakthrow
.console.assert
jest to, że asercje nie są funkcjami obsługi błędów. Są przeznaczone do sprawdzania poprawności kodu tylko podczas programowania. Tradycyjnie są one całkowicie wyłączone w środowiskach produkcyjnych, aby uniknąć zamykania aktywnych systemów z powodu czegoś trywialnego. Przeglądarka jest uważana za środowisko produkcyjne, więcconsole.assert
nie przerywa tam wykonywania. Jeśli polegasz na asercjach, aby zatrzymać wykonywanie, powinieneś zamiast tego korzystać z odpowiedniej obsługi błędów, ponieważ nie do tego służą asercje.Inne odpowiedzi są dobre: w ECMAScript5 nie ma wbudowanej funkcji asercji (np. JavaScript, który działa właściwie wszędzie), ale niektóre przeglądarki dają ci to lub mają dodatki zapewniające tę funkcjonalność. Chociaż najlepiej jest do tego użyć dobrze ugruntowanej / popularnej / utrzymanej biblioteki, do celów akademickich funkcja „twierdzenia biedaka” może wyglądać mniej więcej tak:
źródło
try
,catch
,throw
)assert()
nie jest rodzimą funkcją javascript. Jest to niestandardowa funkcja, którą ktoś stworzył. Będziesz musiał poszukać go na swojej stronie lub w swoich plikach i opublikować, aby ktokolwiek pomógł ustalić, co robi.źródło
sprawdź to: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-quick-and-easy-javascript-testing-with-assert/
służy do testowania JavaScript. O dziwo, przy zaledwie pięciu lub sześciu liniach kod ten zapewnia dużą moc i kontrolę nad twoim kodem podczas testowania.
Funkcja assert akceptuje dwa parametry:
wynik: wartość logiczna, która określa, czy test przeszedł pomyślnie, czy nie
opis: krótki opis twojego testu.
Funkcja potwierdzenia następnie tworzy element listy, stosuje klasę „pozytywny” lub „negatywny”, w zależności od tego, czy test zwrócił wartość prawda czy fałsz, a następnie dołącza opis do elementu listy. Na koniec ten kodowany kod jest dodawany do strony. To szalone proste, ale działa idealnie.
źródło
Oto naprawdę prosta implementacja funkcji asercji. Wymaga wartości i opisu tego, co testujesz.
Jeśli wartość ma wartość true, przechodzi.
Jeśli zwróci fałsz, nie powiedzie się.
źródło
Jeśli twierdzenie jest fałszywe, wyświetlany jest komunikat. W szczególności, jeśli pierwszy argument jest fałszywy, drugi argument (komunikat tekstowy) zostanie zarejestrowany w konsoli narzędzi programistycznych. Jeśli pierwszy argument jest prawdziwy, w zasadzie nic się nie dzieje. Prosty przykład - używam Narzędzi Google dla programistów:
źródło
Prawdopodobnie przyszedł z biblioteką testową, z której korzysta część twojego kodu. Oto przykład jednego (istnieje prawdopodobieństwo, że nie jest to ta sama biblioteka, z której korzysta Twój kod, ale pokazuje ogólny pomysł):
http://chaijs.com/guide/styles/#assert
źródło
Słowo lub funkcja „aser” jest najczęściej używana w testowaniu części aplikacji.
Funkcje asercji to krótki sposób instruowania programu, aby sprawdził warunek (zwany także „asercją”), a jeśli warunek nie jest spełniony, spowoduje zgłoszenie błędu.
Zobaczmy więc, jak by to wyglądało w „normalnym kodzie”
if (typeof "string" === "array") { throw Error('Error: "string" !== "array"'); }
Dzięki
assert
nie możesz po prostu napisać:assert(typeof "string" === "array")
W Javascript nie ma
assert
funkcji natywnej , więc musisz użyć jednej z jakiejś biblioteki.Dla prostego wprowadzenia możesz sprawdzić ten artykuł:
http://fredkschott.com/post/2014/05/nodejs-testing-essentials/
Mam nadzieję, że to pomoże.
źródło
Asercja generuje komunikat o błędzie, jeśli pierwszy atrybut jest fałszywy, a drugi atrybut to komunikat, który ma zostać zgłoszony.
Istnieje wiele komentarzy mówiących, że asercja nie istnieje w JavaScript, ale
console.assert()
jest funkcją asercji w JavaScript. Ideą asercji jest ustalenie, dlaczego / gdzie występuje błąd.Tutaj, w zależności od komunikatu, możesz znaleźć błąd. Te komunikaty o błędach będą wyświetlane na konsoli w kolorze czerwonym, tak jakbyśmy zadzwonili
console.error();
Aby zobaczyć więcej funkcji w konsoli
console.log(console);
źródło
Poprzednie odpowiedzi można poprawić pod względem wydajności i kompatybilności.
Sprawdź raz, czy
Error
obiekt istnieje, jeśli nie, zadeklaruj go:Następnie każde stwierdzenie sprawdzi warunek i zawsze rzuci
Error
obiektNależy pamiętać, że konsola nie wyświetla rzeczywistego numeru linii błędu, ale linię
assert
funkcji, która nie jest przydatna do debugowania.źródło
Jeśli używasz WebPACK, można po prostu użyć node.js bibliotekę twierdzenie . Chociaż twierdzą, że „nie jest to biblioteka asercji ogólnego przeznaczenia”, wydaje się, że jest bardziej niż OK dla asercji ad hoc, i wydaje się, że w przestrzeni Węzła nie istnieje żaden konkurent (Chai jest przeznaczony do testowania jednostkowego).
Aby móc z niego korzystać, musisz użyć pakietu internetowego lub przeglądarki, więc jest to przydatne tylko wtedy, gdy są już w toku pracy.
źródło
Oprócz innych opcji, takich jak console.assert lub rozwijanie własnych , możesz użyć niezmiennika . Ma kilka unikalnych funkcji:
%s
specyfikatora).źródło
Jak wspomniano przez TJ,
assert
JavaScript nie istnieje . Istnieje jednak moduł węzła o nazwie assert , który jest używany głównie do testowania . więc możesz zobaczyć kod taki jak:źródło