So testen Sie Web Sockets - JavaScript

9

Ich möchte Web Sockets testen, die mit sockjs implementiert wurden.

%Vor%

Ich habe gegluckt und nur diesen Artikel gefunden. Das ist nicht gut genug, weil es tatsächlich eine Verbindung herstellt, anstatt es vorzutäuschen.

Ich habe auch SO versucht, aber nur eine unbeantwortete Frage hier gefunden.

Jemand hat sinonjs vorgeschlagen, aber ich kann kein anständiges Beispiel finden.

Ich würde mich freuen, wenn jemand etwas zu diesem Thema beleuchten kann.

    
JS- 09.10.2013, 10:05
quelle

1 Antwort

3

Wenn Sie ein Feature, das auf eine externe Ressource zugreift, wie in Ihrem Fall einen Websocket-Server, in einer Einheit testen, besteht der übliche Ansatz darin, ein Mock-Objekt zu verwenden, um die externe Ressource darzustellen. Ein Scheinobjekt ist ein Objekt, das wie die externe Ressource aussieht und sich verhält, aber nicht darauf zugreift. Zusätzlich kann es Protokollierungsfunktionen haben, die es dem Testcode ermöglichen, sich zu melden, wenn sich der getestete Code wie erwartet verhält.

In Ihrem Fall würden Sie ein Mock-SockJS-Objekt erstellen, das alle relevanten Eigenschaften und Methoden eines normalen SockJS-Objekts enthält, aber seine Implementierung kontaktiert keinen Server. Es protokolliert nur die Methodenaufrufe und gibt die erwartete Antwort zurück, die ein vorhandener Server senden würde.

Dann würden Sie den Code, den Sie testen möchten, so umgestalten, dass er nicht den Socket selbst erzeugt, sondern stattdessen ein Socket-Objekt von außen erhält (das heißt " dependency injection " und ist eine entscheidende Idiom für das Schreiben von Unit-Test-Code).

In Ihrem echten Code weisen Sie ein echtes SockJS-Objekt zu. Aber in Ihrem Unit-Test weisen Sie Ihr Mock-Objekt zu. Nachdem Sie Ihre Testmethoden aufgerufen haben, können Sie das Mock-Objekt untersuchen, um zu überprüfen, ob die Einheit die erwarteten Daten an den Server gesendet hat.

    
Philipp 09.10.2013 13:24
quelle