Was die Tests angeht, wie kann man nicht alle ausführen, sondern nur bestimmte Tests (um zu sehen, ob das, was man ändert, immer noch auf Ebene der Dienste funktioniert).
Denn die anderen Tests wurden nicht geändert, also funktionieren sie natürlich ^^
1) GET /api/v1/service/xiaomi/sensor
should get all sensors:
Error: expected 200 "OK", got 404 "Not Found"
at Test._assertStatus (node_modules/supertest/lib/test.js:268:12)
at Test._assertFunction (node_modules/supertest/lib/test.js:283:11)
at Test.assert (node_modules/supertest/lib/test.js:173:18)
at Server.localAssert (node_modules/supertest/lib/test.js:131:12)
at emitCloseNT (net.js:1618:8)
at process._tickCallback (internal/process/next_tick.js:63:19)
Das liegt daran, dass ich den Test auf den Service starte, das ist möglicherweise der Grund? Und der Server ist nicht gestartet?
In den Tests werden die Controller der Dienste nicht auf dem Server gestartet (da man sonst die Dienste tatsächlich starten müsste).
Bisher ist die beste Lösung, die ich gefunden habe, jeden Controller einzeln zu testen. Du kannst dir die anderen Dienste ansehen, wie ich es gemacht habe!
Ja, das habe ich gemacht! Ich instanziere den Controller und teste jede Route.
Ich habe eine gute Abdeckung, bin aber nicht zufrieden… Denn es gibt einen kleinen Teil des Codes, der es ermöglicht, den Sensorwert zu ändern, und der nicht getestet wird. Das Problem ist, dass dieses Element nicht vorhanden ist, weil es zuerst erstellt werden muss und dann ein Event mit einem Wert, der aktualisiert werden soll, erstellt wird. Ich weiß nicht, was die beste Methode ist, um das Element zu erstellen.
Du kannst sehen, dass, wenn device null ist, es nicht in this.gladys.event.emit eintritt. Dieser Teil ist noch nicht getestet.
Normalerweise solltest du Unit-Tests schreiben, sodass du alle Fälle simulieren kannst, indem du verschiedene Parameter oder gemockte Funktionen injizierst. Die Variable « gladys », die du übergibst, muss alle gemockten Funktionen mit Fake-Werten haben!
Toll, besonders weil du ja schon einiges hast. Halte mich auf dem Laufenden, welche Geräte du hast und welche du hinzufügen möchtest! Ich kann sie hinzufügen, ich brauche nur dein Feedback von der Gateway und arbeite dann auf Basis deiner Infos
@damalgos, wir haben es mit @pierre-gilles auf seinem Mac ausprobiert, kein Problem! Meine Xiaomi-Geräte melden sich ohne Probleme, Türsensor, Temperatursensor.
Das Problem liegt also bei Node auf Windows. Ich werde ein bisschen suchen, ansonsten werde ich es auf Linux oder in Docker auf Syno überprüfen.
Ansonsten ja, ich habe Infos darüber gesehen, dass es auf Windows nicht funktioniert… Wahrscheinlich ein Problem mit der Portfreigabe wegen der Firewall, alles deaktivieren und auf Windows testen
Jedenfalls froh, dass alles ohne Probleme hochgefahren wird. Bei dir werden die Dienste schnell hochgefahren? Bei mir etwas langsam ^^
Ja, das ging schnell. Für bestimmte Geräte muss man natürlich warten, bis sie im Netzwerk sprechen. Und es ist sehr reaktiv, zum Beispiel wenn man eine Tür öffnet/schließt. Wir waren mit Pierre-Gilles begeistert! → Das hat uns vom Z-Wave befreit, wo nichts standardisiert ist und es viel zu viele Einstellungsmöglichkeiten gibt!