„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Clean Code verstehen: Unit-Tests ⚡

Clean Code verstehen: Unit-Tests ⚡

Veröffentlicht am 31.08.2024
Durchsuche:809

Understanding Clean Code: Unit Tests ⚡

In der Softwareentwicklung ist Unit-Test eine entscheidende Praxis, die dabei hilft, die Korrektheit Ihres Codes sicherzustellen.

Kapitel 9 von Clean Code: A Handbook of Agile Software Craftsmanship mit dem Titel „Unit Tests“ befasst sich mit den Prinzipien und Praktiken zum Schreiben sauberer und effektiver Unit-Tests.

In diesem Artikel fassen wir die wichtigsten Erkenntnisse aus dem Kapitel zusammen und stellen JavaScript-Beispiele zur Verfügung, um diese Konzepte zu veranschaulichen.


? Warum Unit-Tests wichtig sind

Bei Unit-Tests werden Tests für einzelne Einheiten oder Komponenten Ihres Codes geschrieben, um zu überprüfen, ob sie wie erwartet funktionieren. Die Hauptziele von Unit-Tests sind:

1- Fehler frühzeitig erkennen: Probleme während der Entwicklung erkennen, bevor sie in die Produktion gelangen.

2- Erleichtern Sie das Refactoring: Stellen Sie sicher, dass Änderungen an Ihrem Code die vorhandene Funktionalität nicht beeinträchtigen.

3- Dokumentcode-Verhalten: Dienen als Dokumentation dafür, wie Ihr Code verwendet werden soll.


? Prinzipien effektiver Unit-Tests

⚡ Testen Sie jeweils eine Sache

Jeder Unit-Test sollte sich auf einen einzelnen Aspekt der Funktionalität konzentrieren. Dies erleichtert das Verständnis und die Wartung von Tests. Wenn ein Test fehlschlägt, wissen Sie genau, wo das Problem liegt.

function add(a, b) {
    return a   b;
}

// Test case for the add function
function testAdd() {
    // Test adding positive numbers
    assertEqual(add(2, 3), 5, '2   3 should be 5');
    // Test adding negative numbers
    assertEqual(add(-1, -1), -2, '-1   -1 should be -2');
}

// A simple assertion function
function assertEqual(actual, expected, message) {
    if (actual !== expected) {
        throw new Error(message);
    }
}

⚡ Machen Sie Tests lesbar

Ihre Tests sollten leicht lesbar und verständlich sein. Verwenden Sie aussagekräftige Namen für Ihre Testfunktionen und klare Aussagen. Dies hilft anderen (und Ihnen selbst), schnell zu verstehen, was jeder Test überprüft.

function isEven(number) {
    return number % 2 === 0;
}

// Descriptive test function
function testIsEven() {
    assertEqual(isEven(4), true, '4 should be even');
    assertEqual(isEven(5), false, '5 should be odd');
}

⚡ Verwenden Sie klare und aussagekräftige Namen

Namen von Testfällen sollten beschreiben, was sie testen. Dies verbessert die Lesbarkeit und Wartbarkeit Ihrer Tests.

function calculateTotalPrice(items) {
    return items.reduce((total, item) => total   item.price, 0);
}

// Descriptive test case names
function testCalculateTotalPrice() {
    assertEqual(calculateTotalPrice([{ price: 10 }, { price: 20 }]), 30, 'Total price should be 30 for items costing 10 and 20');
    assertEqual(calculateTotalPrice([{ price: 5 }]), 5, 'Total price should be 5 for a single item costing 5');
}

⚡ Halten Sie Tests unabhängig

Jeder Test sollte unabhängig von anderen sein. Tests, die auf dem gemeinsamen Status basieren, können zu unzuverlässigen Tests führen und das Debuggen erschweren.

function multiply(a, b) {
    return a * b;
}

// Independent test cases
function testMultiply() {
    assertEqual(multiply(2, 3), 6, '2 * 3 should be 6');
    assertEqual(multiply(0, 10), 0, '0 * 10 should be 0');
}

⚡ Verwenden Sie Mocks und Stubs angemessen

Mocks und Stubs können dabei helfen, die zu testende Codeeinheit zu isolieren, indem sie Abhängigkeiten simulieren. Setzen Sie sie jedoch mit Bedacht ein, um zu komplizierte Tests zu vermeiden.

// Example of using a mock for a database call
function getUser(id) {
    // Imagine this function makes a database call
    return database.getUserById(id);
}

function testGetUser() {
    const mockDatabase = {
        getUserById: (id) => ({ id, name: 'John Doe' }),
    };

    const result = getUser(1, mockDatabase);
    assertEqual(result.name, 'John Doe', 'User name should be John Doe');
}

⚡ Automatisieren Sie Tests

Automatisieren Sie die Ausführung Ihrer Komponententests, um sicherzustellen, dass sie regelmäßig ausgeführt werden. Tools für die kontinuierliche Integration (CI) können dabei helfen, Ihre Tests automatisch auszuführen, wenn Änderungen vorgenommen werden.

Wenn Sie ein Test-Framework wie Jest verwenden, können Sie ein Skript in Ihrer package.json einrichten:

"scripts": {
    "test": "jest"
}

Durch Ausführen von npm test werden alle Ihre Tests ausgeführt und Feedback zu deren Status bereitgestellt.


Abschluss

Das Schreiben sauberer und effektiver Unit-Tests ist für die Aufrechterhaltung eines qualitativ hochwertigen Codes unerlässlich.

Indem Sie die in Kapitel 9 des Clean Code dargelegten Grundsätze befolgen, können Sie sicherstellen, dass Ihre Tests zuverlässig, verständlich und wertvoll sind.

Die Implementierung dieser Praktiken in Ihren JavaScript-Code verbessert nicht nur die Qualität Ihrer Tests, sondern trägt auch zu einer robusteren und wartbareren Codebasis bei.

Viel Spaß beim Codieren!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/alisamir/understanding-clean-code-unit-tests-5d1a?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3