2017-02-07 2 views
1

Ich verwende die Bibliothek gozk, um meine Anwendung mit einem Produktions-Tierpfleger-Server zu verbinden. Ich würde testen möchte, dass die Anwendung die richtigen Knoten erstellen, dass sie den richtigen Inhalt für verschiedene Fälle enthalten, und dass die Datawatch und NodeWatch richtig eingestellt sind:Wie spottet man einen Zookeeper-Server für Unit-Test in Golang?

dh führt die Anwendung genau das, was auf der Basis sollte Knoten- und Datenaktualisierungen.

Kann ich einen Mock-Zookeeper-Server nur während der Komponententests erstellen und vernichten lassen, mit der Möglichkeit, einen neuen Knoten künstlich zu erstellen und den Knoteninhalt festzulegen? Gibt es eine andere Möglichkeit, als einen Zoowärterserver manuell zu erstellen und zu verwenden?

Eine Lösung existiert bereits für java

+0

Ihre referenzierte Lösung in Java ist eigentlich kein Mock, sondern eine echte Instanz von Zookeeper. Da Zookeeper in Java geschrieben ist, ist die einzige Möglichkeit, das Gleiche in go zu tun, das 'os/exec'-Paket, um die Zookeeper-Instanz auszuführen. – ymonad

Antwort

2

würde ich empfehlen, den Code von Ihnen machen, die Tierpfleger werden eine Schnittstelle aufruft.

Dann beim Testen Sie Unter in einem Objekt ‚mockZookeeperConn‘, die nur Werte zurückgibt, als ob es wirklich an den Server wurde Anschluss (aber die Rückgabewerte fest einprogrammiert werden)

0

@ Ben Echols ‚s Antwort ist sehr gut.

Als weitere Möglichkeit können Sie versuchen "build constraints".

Sie können verschiedene Build-Tags auf Real-ZK- und Mock-ZK-Code konfigurieren.

Zum Beispiel konfigurieren wir "Produkt" für Real-ZK-Code und "Mock" für Mock-ZK-Code.

So gibt es zwei Möglichkeiten, Unittests auszuführen:

  • go test -tags mock wenn es kein zk env ist.
  • go test -tags product wenn es ein verfügbares zk env gibt.
+0

Ja! Danke für den Hinweis. Ich benutzte diese Technik, um den automatischen zk-Komponententest nur dann zu aktivieren, wenn eine Serving-Instanz verfügbar ist. –

Verwandte Themen