Ich schreibe Komponententests für ein Modul in einer kleinen Javascript-Anwendung. Um die Schnittstelle sauber zu halten, werden einige der Implementierungsdetails durch eine anonyme Funktion (das übliche JS-Muster für die Privatsphäre) geschlossen. Während des Testens muss ich jedoch auf die privaten Teile zugreifen/nachmachen/überprüfen.White-Box-Test in Javascript - Wie geht man mit der Privatsphäre um?
Die meisten der Tests, die ich vorher geschrieben habe, waren in Python, wo es keine echten privaten Variablen gibt (Mitglieder, Bezeichner, wie immer man sie nennen will). Man schlägt einfach Privatsphäre über einen führenden Unterstrich für die Benutzer vor und ignoriert sie beim Testen des Codes. In statisch getippten OO-Sprachen könnte man private Mitglieder für Tests zugänglich machen, indem man sie in geschützte Objekte umwandelt und das zu testende Objekt unterklassifiziert. In Javascript trifft Letzteres nicht zu, während Ersteres als schlechte Übung erscheint.
Ich könnte immer wieder auf Black-Box-Tests zurückgreifen und einfach die Endergebnisse überprüfen. Es ist der einfachste und sauberste Ansatz, aber leider nicht detailliert genug für meine Bedürfnisse.
Gibt es also eine Standardmethode, um Variablen privat zu halten und trotzdem einige Backdoors für das Testen in Javascript beizubehalten?
Hmm, ich mag es nicht, wenn Leute meine privaten Teile verspotten – Martin