Pour ce qui est des tests, comment faire pour pas tout lancer mais juste certains tests (pour voir si ce que l’on modifie fonctionne toujours au niveau des services).
Car les autres tests ne sont pas modifié donc ils fonctionnent forcément ^^
Pour ce qui est des tests, comment faire pour pas tout lancer mais juste certains tests (pour voir si ce que l’on modifie fonctionne toujours au niveau des services).
Car les autres tests ne sont pas modifié donc ils fonctionnent forcément ^^
Génial merci ! Ca sauve une vie ça …
Le mieux est de mettre ton test en .only!
Source:
https://mochajs.org/#exclusive-tests
(La solution de @Jacky fonctionne très bien aussi)
Pas nécessairement vrai, ton code peut impacter le fonctionnement du reste
Oui je sais bien mais je voulais dire dans le sens que quand je test autant tester d’abord mon service et de voir si après tout est bon
Oki je vais faire cela alors merci !
J’ai un soucis, voici l’exemple:
describe('GET /api/v1/service/xiaomi/sensor', () => {
it('should get all sensors', async () => {
await authenticatedRequest
.get('/api/v1/service/xiaomi/sensor')
.expect('Content-Type', /json/)
.expect(200)
.then((res) => {
expect(res.body).should.be.a('array');
});
});
});
J’ai ce résultat =>
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)
C’est parce que justement je lance que le test sur le service c’est possiblement ça la raison ? Et du coup le serveur est pas lancé?
Top merci je vais regarder tout ça.
Je suis pas top top sur les tests mais le moudle xiaomi est un bon exemple pour progresser sur un peu de tout
Quand tu espères avoir suffisant de code coverage mais qu’en fait tu as 89%
Pas de change !! Moi je viens de passer à 91.33
Même pas !!!
J’ai réellement testé une fonction mdr
Dans les tests les controllers des services ne sont pas lancées sur le serveur (vu que sinon il faudrait lancer les services réellement)
Pour l’instant la meilleure solution que j’ai trouvé c’est de tester unitairement chaque controller, tu peux regarder les autres services comment j’ai fais!
Yes c’est ce que j’ai fait ! J’instancie le controller et je test chaque route.
Je suis bon sur le coverage mais pas satisfait … Car en gros j’ai une petite partie du code qui permet de modifier la valeur du capteur et qui n’est pas testé. Le soucis c’est que cet élément n’est pas présent car il faut le créer au préalable et ensuite on refait un event avec une valeur à mettre à jour. Du coup je sais pas c’est quoi la meilleure méthode pour créer l’élément.
Tu peux voir que si device est null, alors il ne rentre pas dans this.gladys.event.emit. Cette partie n’est pas encore testé.
Normalement tu es censé faire du test unitaire, donc tu peux simuler tous les cas en injectant différents paramètres/différentes fonctions mockée. La variable “gladys” que tu passes doit avoir toutes les fonctions mockée avec fake!
Mais oui !!!
Pourquoi j’y ai pas pensé plus tôt … Je dois simplement faire un gladys qui me renvoit un objet ! Merci
Je vous tiens au courant de l’avancé du service.
Actuellement je gère ces équipements:
Apparemment il y aurait un soucis sur les installation Windows. Sur mac et linux cela a l’air de fonctionner.
Au niveau de la page des services voici le service xiaomi:
Ensuite lorsque l’on va dans le service on a accès à deux pages:
Voici les captures des deux pages:
N’hesitez pas à me faire des retours.
Si vous voulez tester:
git checkout xiaomi
Ensuite il faut suivre les commandes suivantes: A privacy-first, open-source home assistant | Gladys Assistant
Génial surtout vu que tu dev pas mal tiens moi au jus sur les équipements que tu as et que tu souhaiterais ajoutés ! Je peux les ajouter j’aurai juste besoin de toi pour avoir un retour de la gateway et je travail a partir de tes infos
@damalgos, on a testé avec @pierre-gilles, sur son mac pas de souci ! mes équipements Xiaomi remontent sans pb, detecteur d’ouverture, sonde de temp .
Le pb vient donc de node sur Windows. Je vais chercher un peu, sinon je checkerai sur linux ou en docker sur syno.
Tu peux installer wsl
Sinon oui j’ai vu des infos dessus comme quoi ça fonctionnait pas sur windows … Problème surement d’ouverture de port à cause du parefeu faudrait tout désactiver et tester sur le windows
En tout cas content que tout remonte sans soucis. De ton côté ça remonte rapidement les services ? Moi un peu lent ^^
ça remontait rapidement oui. Pour certain équipement, il faut bien entendu attendre qu’ils parlent sur le réseau.
Et c’est très réactif par exemple quand on ouvre/ferme une porte; On était en admiration avec pierre-gilles! → Ça nous a changé du Zwave où rien n’est standardisé et où il y a bien trop de paramétrages possible !
Génial si ça fonctionne bien ! de mon côté aussi ça fait pareil pour les capteurs sauf température c’est long ahah
Tu as par hasard d’autres équipements pas pris en charge ? Que je puisse les détecter et les ajouter
Victoire, j’ai enfin réussi sous Windows 10 !!!
J’ai essayé de modifié les route du broadcast, multicast, firewall and co…Rien !
finalement j’ai simplement ajouté mon IP dans addMembership, ce qui donne ceci dans le fichier : xiaomi.listening.js :
async function listening() {
logger.debug('UDP Client listening on ’ + MULTICAST_ADDRESS + « : » + DISCOVERY_PORT);
this.socket.setBroadcast(true)
this.socket.setMulticastTTL(128);
this.socket.addMembership(‹ 224.0.0.50 ›,‹ 192.168.10.70 ›);
const payload = ‹ {« cmd »: « whois »} ›;
this.socket.send(payload, 0, payload.length, DISCOVERY_PORT, MULTICAST_ADDRESS);
J’attaque les choses sérieuses, je vais sortir mes Xiaomi ^^