LWC-Komponenten - Wie werden Komponentenklassenmethoden isoliert getestet?

Dec 04 2020

Ist es möglich, die Methoden in einer Klasse, die erweitert ist LightningElement(z. B. eine LWC-Komponente), isoliert zu testen ?

Mit anderen Worten, ich denke, es wäre zeiteffektiver, einfach eine Instanz der Komponentenklasse mit new MyComponent()den Instanzmethoden zu erstellen und diese dann zu testen. Mit anderen Worten, Standard-JavaScript-Komponententests anstelle von Tests auf DOM-Ebene.

Es ist nicht so, dass ich den Wert in Tests auf DOM-Ebene nicht sehe, aber viel Logik in LWC-Komponenten hängt nicht mit DOM zusammen, und es ist umständlich, ihn über das DOM zu testen.

Geht es darum, eine Nicht-DOM-Logik in eine Klasse einzufügen, die dann in die Komponente importiert wird?

Vielen Dank.

Antworten

3 TrevorBliss Dec 04 2020 at 03:05

Wie am Ende des Beitrags erwähnt, ist es am besten, diese Logik in eine separate Datei zu ziehen und in Ihre Komponente sowie direkt in einen Komponententest zu importieren.

Ein gutes Beispiel , dass in dem LWC-recpies Projekt würde die seine mortgage.js Bibliothek , die seine eigenen Tests (keine Komponente beteiligt ist ) hat, und wird in die importierten miscSharedJavascript Komponente zur Verwendung. Die miscSharedJavascript-Tests können dann den Hypothekenanruf verspotten, wenn sie dies wünschen.

Beachten Sie im obigen Beispiel auch, dass sich die aus der Komponente herausgezogene Logik nicht in einem separaten Ordner befinden muss und eine lokale Javascript-Datei im Komponentenpaket sein kann.

1 MatthewSouther Dec 04 2020 at 07:08

In einem besonders schweren LWC habe ich Nicht-DOM-Logik in eine separate helper.jsDatei im Komponentenpaket gezogen, die ich direkt mit Jest getestet habe.

Diese StackExchange-Antwort beschreibt, wo ich die Datei abgelegt und wie ich sie in die Hauptkomponentenklasse gefaltet habe.