Frage

Ich schreibe Unit-Tests für ein Modul in einer kleinen Javascript-Anwendung. Um die Schnittstelle sauber zu halten, sind einige der Details der Implementierung durch eine anonyme Funktion (die üblichen JS Muster für die Privatsphäre) geschlossen über. Während jedoch die Prüfung muss ich Zugang / Mock / die privaten Teile überprüfen.

Die meisten der Tests, die ich bisher in Python gewesen geschrieben haben, in denen es keine realen privaten Variablen (Mitglieder, Identifikatoren, was auch immer Sie sie nennen wollen). Man schlägt vor, einfach die Privatsphäre über einen führenden Unterstrich für die Benutzer und ignoriert es frei, während Sie den Code zu testen. In statisch typisierte OO-Sprachen nehme ich an einer durch Umwandlung sie geschützt werden private Mitglieder zugänglich Tests machen könnte und Subklassen das Objekt getestet werden. In Javascript, wird diese nicht anwenden, während erstere wie schlechte Praxis scheint.

Ich konnte immer zu Black-Box-Tests zurückgreifen und einfach die endgültigen Ergebnisse überprüfen. Es ist die einfachste und sauberste Ansatz, aber leider nicht wirklich genug für meine Bedürfnisse detailliert beschrieben.

So ist es eine standardisierte Möglichkeit Variablen zu halten private während noch einige Backdoors Halte für in Javascript testen?

War es hilfreich?

Lösung

Nein. Ich glaube nicht, es gibt. Es läuft darauf hinaus grundsätzlich nach unten, ob Sie die Schließung Ansatz und White-Box-Tests verzichten oder tun White-Box-Tests und die Verwendung Namen Dekoration für „private“ Mitglieder. Eigentlich nicht nur in Python, aber in Javascript zu viele Projekte verwenden die nicht so magischen Strich Gemeinen zu dekorieren. Also in gewisser Weise ist dies bereits eine weithin akzeptierte Lösung für das Problem.

Wenn Sie nicht wollen, dass und wirklich, wirklich brauchen, White-Box-Unit-Tests, dann können Sie immer die Tests in Ihre Objekte integrieren. Wenn Sie einen separaten Build-Schritt für die Produktion Code haben (Minimierung benötigen / Bereitstellungsauflösung, usw.), dann können Sie die Testfunktionen in diesem Prozess entfernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top