Node.js assert-Modul
In Node.js, dasassertModul ist eine integrierte Hilfsbibliothek zum Schreiben von Unit-Tests. Es bietet eine Reihe von Assertion-Funktionen, um zu überprüfen, ob das Verhalten des Codes den Erwartungen entspricht. Wenn eine Assertion fehlschlägt,assertdas Modul wird einenAssertionErrorAusnahme.
assertDas Modul eignet sich sehr gut für die Verwendung während der Entwicklung und beim Testen und hilft Entwicklern, Probleme im Code schnell zu entdecken.
Wie verwendet man das assert-Modul?
UmassertModul, müssen Sie es zuerst importieren:
Grundlegende Assertion-Methoden
1. assert.ok(value[, message])
assert.ok()ist die grundlegendste Assertion-Methode. Sie testetvalueob es ein truthy-Wert ist. Wennvaluees falsy ist, dann wirftAssertionError。
Beispiel
assert.ok(1); // bestanden
assert.ok(false); // wirft AssertionError
assert.ok(0, 'value is falsy'); // wirft AssertionError: value is falsy
2. assert.equal(actual, expected[, message])
assert.equal()Verwendet==Operator zum Vergleichenactualundexpectedob sie gleich sind (lose Gleichheit).
Beispiel
assert.equal(1, '1'); // bestanden
assert.equal(1, 2); // wirft AssertionError
3. assert.strictEqual(actual, expected[, message])
assert.strictEqual()Verwendet===Operator zum Vergleichenactualundexpectedob sie strikt gleich sind.
Beispiel
assert.strictEqual(1, '1'); // wirft AssertionError
4. assert.deepEqual(actual, expected[, message])
assert.deepEqual()Wird verwendet, um zu vergleichen, ob die Inhalte zweier Objekte oder Arrays gleich sind (rekursiver Vergleich).
Beispiel
assert.deepEqual([1, 2], [1, 2]); // bestanden
assert.deepEqual({ a: 1 }, { a: '1' }); // bestanden (nicht strikter Vergleich)
5. assert.deepStrictEqual(actual, expected[, message])
assert.deepStrictEqual()Ähnlich wiedeepEqual, verwendet jedoch einen strikten Vergleich (===)。
Beispiel
assert.deepStrictEqual({ a: 1 }, { a: '1' }); // wirft AssertionError
Weitere gängige Assertion-Methoden
1. assert.notEqual(actual, expected[, message])
Prüftactualundexpectedob sie nicht gleich sind (!=)。
Beispiel
assert.notEqual(1, '1'); // wirft AssertionError
2. assert.notStrictEqual(actual, expected[, message])
Prüftactualundexpectedob sie nicht strikt gleich sind (!==)。
Beispiel
assert.notStrictEqual(1, 1); // wirft AssertionError
3. assert.throws(block[, error][, message])
Prüftblockob eine Funktion einen Fehler auslöst.
Beispiel
() => {
throw new Error('Wrong value');
},
Fehler
); // bestanden
assert.throws(
() => {
throw new Error('Wrong value');
},
/Wrong/
); // bestanden (regulärer Ausdruck stimmt mit Fehlermeldung überein)
4. assert.doesNotThrow(block[, error][, message])
Prüftblockob eine Funktion keinen Fehler wirft.
Beispiel
() => {
const x = 1 + 1;
},
Fehler
); // bestanden
5. assert.fail([message])
Erzwingt das Auslösen einesAssertionError。
Beispiel
Praktisches Anwendungsbeispiel
Angenommen, wir haben eine einfache Funktionadd, die verwendet wird, um die Summe zweier Zahlen zu berechnen:
Beispiel
return a + b;
}
Wir können verwendenassertModul, um Tests dafür zu schreiben:
Beispiel
// Normalfall testen
assert.strictEqual(add(1, 2), 3, '1 + 2 sollte 3 sein');
assert.strictEqual(add(-1, 1), 0, '-1 + 1 sollte 0 sein');
// Grenzfall testen
assert.strictEqual(add(0, 0), 0, '0 + 0 sollte 0 sein');
assert.strictEqual(add(1.5, 2.5), 4, '1.5 + 2.5 sollte 4 sein');
// Fehlerfall testen
assert.throws(
() => hinzufügen('1', 2),
TypeError,
'Hinzufügen einer Zeichenkette zu einer Zahl sollte TypeError werfen'
);
Hinweise
Produktionsumgebung:
assertDas Modul wird hauptsächlich in Entwicklungs- und Testumgebungen verwendet. Es wird nicht empfohlen, es in der Produktion zu verwenden, da Assertion-Fehler das Programm zum Absturz bringen.Strict-Modus: Node.js bietet außerdem
assert/strictein Modul, dasassertdie strikte Version des Moduls ist. Alle Vergleiche verwenden strikte Gleichheit (===)。const assert = require('assert/strict');Benutzerdefinierte Fehlermeldungen: Geben Sie klare Fehlermeldungen für jede Assertion an, was hilft, Probleme schnell zu lokalisieren.
Leistungsüberlegungen: Obwohl
assertModul ist sehr praktisch, sollte jedoch in leistungskritischem Code mit Vorsicht verwendet werden, da Assertion-Prüfungen zusätzlichen Overhead verursachen.
Zusammenfassung
assertDas Modul ist ein einfaches, aber leistungsstarkes Testwerkzeug in Node.js, besonders geeignet für Unit-Tests und Codeverifizierung während der Entwicklungsphase. Durch die angemessene Verwendung verschiedener Assertion-Methoden können Sie die Korrektheit des Codes effektiv sicherstellen. Denken Sie daran, dass Sie nach Abschluss der Entwicklung ersetzen solltenassertModul für umfassendere Tests.
Node.js integrierte Module