Hier ist eine Möglichkeit! Vielleicht testen Sie Ihr JavaScript mit einem Framework wie Jasmine. Das ist gut, denn Sie können viele Tests schreiben, um Ihre Anwendung abzudecken, eine nette kleine Benutzeroberfläche zur Ansicht der Ergebnisse erhalten und sie sogar in Build- und Deployment-Tools integrieren, um Ihre laufende Entwicklung sicherer zu machen.
Nun, vielleicht gibt es in Ihrem Team einen verrückten Entwickler, der ständig API-Endpunkte ändert – und dabei buchstäblich Dinge kaputt macht. Sie beschließen, einen Test zu schreiben, der diese Endpunkte aufruft und sicherstellt, dass Sie das zurückbekommen, was Sie erwarten. Ganz einfach. Das einzige, was ein wenig knifflig ist, ist, dass API-Anfragen asynchron sind. Um sie wirklich zu testen, muss der Test eine Möglichkeit haben, auf die Ergebnisse zu warten, bevor die Erwartungen getestet werden.
Das kann in Jasmine über eine beforeEach() behandelt werden, die warten kann, bis Sie eine done() Funktion aufrufen. Hier ist das Ganze
Siehe den Pen
Test Endpoint with Jasmine von Chris Coyier (@chriscoyier)
auf CodePen.
Hier ist weitgehend dasselbe, aber mit Mocha/Chai
Siehe den Pen
Test Endpoint with Mocha/Chai von Chris Coyier (@chriscoyier)
auf CodePen.
Das ist ein großartiges Thema zum Studieren. Es ist so einfach, versehentlich einen Endpunkt zu ändern, und das kann große Auswirkungen haben. In den letzten Jahren habe ich einen String-Status in ein Objekt geändert, um ein paar mehr Informationen aufzunehmen. Wir haben die Änderung übersehen, aber der Kunde hat uns schnell darauf hingewiesen.
Ich mag Frisby irgendwie, da es Unterstützung für JSON-Schema, Header und Statuscodes mit einer geradlinigen DSL bietet.
https://www.frisbyjs.com/
Jasmine unterstützt auch Promises und async/await: https://jasmine.github.io/tutorials/async
Viel einfacher zu handhaben als Callback-Funktionen. :)
Ich hasse es, "der Typ" zu sein, und ich erwarte nicht, dass Sie diesen Kommentar genehmigen. Aber ich würde argumentieren, dass dies keine "zwei Wege" sind, sondern nur einer. Auch wenn Sie zwei verschiedene Frameworks verwenden, machen Sie im Wesentlichen dasselbe.
Ich sage das nur, weil ich wissen wollte, was die zweite Methode wäre, außer dem Offensichtlichen "eine Anfrage senden, die Antwort prüfen".
Danke trotzdem.
Baylor Rae' hat mir zuvorgekommen, FrisbyJS vorzuschlagen, also werde ich diese Empfehlung höflich mit einem +1 versehen.
Ich würde davon abraten, Endpunkte clientseitig zu testen, es sei denn, es handelt sich um Drittanbieterbibliotheken, die nicht zuverlässig sind.
Idealerweise hat eine API eine SLA (Service Level Agreement) und wenn sie intern ist, sollten Backend-Tests vorhanden sein.
Andernfalls würde ich vorschlagen, beim Testen bei Jest zu bleiben.