Mokka in TypeScript

Rana Hasnain Khan 15 Februar 2024
Mokka in TypeScript

Wir stellen Mocha vor und wie man damit Tests in TypeScript installiert und durchführt.

Mokka in TypeScript

Wenn wir an einer kommerziellen App oder einer Anwendung arbeiten, die Millionen von Benutzern verwenden werden, müssen wir sicherstellen, dass unsere Anwendung perfekt und fehlerfrei läuft. Zu diesem Zweck verwenden wir Mocha, ein JavaScript-Testframework.

Wir können Mocha verwenden, um asynchrone Tests und Abdeckungsberichte auszuführen, und wir können es verwenden, um jede der Behauptungsbibliotheken zu testen.

In diesem Tutorial stellen wir Ihnen vor, wie Sie Mocha in TypeScript installieren. Wie wir wissen, handelt es sich um ein JavaScript-Framework, und die Einrichtung von Mocha mit TypeScript ist keine leichte Aufgabe und erfordert Zeit und Mühe.

Es steht ein TypeScript-Framework zur Verfügung, das alle Aufgaben bezüglich der Änderungen und Updates von Mocha und ts-node übernimmt und uns erlaubt, uns nur um das Schreiben von Tests zu kümmern. Die ts-mocha-Bibliothek ist eine praktische Bibliothek, mit der wir Mocha einfach implementieren und verwenden können.

Um es in unserem Projekt zu installieren, können wir den folgenden Befehl ausführen.

npm i ts-mocha

Es ist auch wichtig, die Typen mocha und expect in unserem Projekt zu installieren, indem Sie den folgenden Befehl ausführen.

npm i @types/mocha @types/expect

Beim Hinzufügen und Ausführen von Tests erhalten die meisten von uns Fehler im Zusammenhang mit typescript-require. Wir können dies leicht lösen, indem wir die Abhängigkeit von ts-node mit dem folgenden Befehl installieren.

npm i ts-node

Dieser Befehl installiert die erforderliche Bibliothek, und wir können die Tests einfach mit mocha erstellen und ausführen. Mocha wird meistens mit einem anderen Framework verwendet, das als chai bekannt ist.

Es ist eine BDD/TDD-Assertion-Bibliothek für Node.js. Diese Bibliothek wird mit beliebigen Testframeworks gekoppelt und hilft beim Schreiben der Tests.

Lassen Sie uns nun ein Beispiel durchgehen, in dem wir einen beispielhaften Mocha-Test erstellen und prüfen, wie wir ihn erstellen und in unseren Anwendungen verwenden können. Zuerst müssen wir unser neues Projekt installieren.

Zu diesem Zweck erstellen wir ein neues Verzeichnis mit dem Namen mocha und initialisieren unser Projekt, indem wir den folgenden Befehl in unserem Terminal ausführen.

npm init

Es wird uns nach Optionen für unser Projekt fragen und eine package.json-Datei erstellen. Nachdem wir diesen Schritt abgeschlossen haben, installieren wir nun Express mit dotenv mit dem folgenden Befehl.

npm i --save express dotenv

Nach der Installation von Express werden wir mocha, chai, typescript, nodemon, supertest, ts-node und tsconfig-paths in unserem Projekt installieren. Wie bereits erwähnt, werden mocha und chai zusammen verwendet, um Tests zu schreiben.

Wir werden typescript installieren, weil wir Tests in typescript erstellen werden.

Wir werden nodemon verwenden, weil es uns erlaubt, das Projekt jedes Mal zu aktualisieren, wenn wir Änderungen in unseren Projektdateien vornehmen. Wir werden supertest installieren, weil es uns erlaubt, Endpunkte in unserem Mocha-Test zu testen.

Dies hilft uns, APIs zu testen. Wir werden ts-node installieren, was uns erlaubt, TypeScript in unserem Node-Projekt zu verwenden, und wir brauchen tsconfig-paths, was uns erlaubt, absolute Importe im gesamten Node-Projekt in unseren Mocha-Tests zu verwenden.

Wir können den folgenden Befehl ausführen, um sie zu installieren, wie unten gezeigt.

npm i -D mocha chai typescript nodemon supertest ts-node tsconfig-paths

Jetzt werden wir die Typen dieser Abhängigkeiten installieren, da TypeScript die Typen kennen muss. Wir können sie einfach mit dem folgenden Befehl installieren.

npm i -D @types/chai @types/mocha @types/node @types/supertest

Wir werden die Befehle build und dev in unserem Abschnitt scripts package.json hinzufügen, wie unten gezeigt.

"scripts": {
    "build": "tsc -p .",
    "dev": "NODE_ENV=dev nodemon -r tsconfig-paths/register src/app.ts",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

Wir müssen auch die TypeScript-Konfiguration in unserem Projekt initialisieren. Wir können das ganz einfach mit dem folgenden Befehl tun.

tsc --init

Dieser Befehl erstellt eine neue Datei mit dem Namen tsconfig.json, die alle Konfigurationen von TypeScript enthält. In dieser Datei müssen wir einige Änderungen vornehmen.

Zuerst müssen wir unser Ausgabeverzeichnis ändern, damit es beim Kompilieren von TypeScript eine Menge JavaScript ausgeben kann, das im Browser verwendet werden kann, und wir werden es in den Ordner dist legen, und einige andere Änderungen, wie z unten gezeigt.

"rootDir": "./src",
"moduleResolution": "node",
"baseUrl": "./src",

Jetzt richten wir den Befehl test in der Datei package.json ein oder fügen ihn hinzu, wie unten gezeigt.

"test": "NODE_ENV=test mocha --check-leaks -r tsconfig-paths/register -r ts-node/register \"test/**/*.spec.ts\""

Wir erstellen ein neues Verzeichnis für Tests und fügen die Datei index.specs.ts unserem Testverzeichnis hinzu. Wir werden innerhalb unseres Testverzeichnisses ein weiteres Verzeichnis mit dem Namen des Servers erstellen, das eine Datei server-runs.specs.ts enthält, wie unten gezeigt.

Ordnerstruktur zum Testen mit Mokka in Maschinenschrift

Lassen Sie uns einige Beispieltests in beiden Dateien erstellen. Der Test in der index.specs.ts ist unten dargestellt.

describe('test', function(){
    it("testing", function(){
        console.log('Looks fine')
    });
})

Lassen Sie uns den Test in server-runs.specs.ts erstellen, wie unten gezeigt.

describe('server checking', function(){
    it("server is created without any error", function(){
        console.log('Looks fine')
    });
})

Lassen Sie uns die Tests ausführen und überprüfen, wie sie mit dem folgenden Befehl funktionieren.

npm test

Ausgang:

Mokka-Tests in Typoskript überprüfen

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn