Ich bin neu in AngularJS zu testen und habe gerade begonnen, Tests mit Karma und Jasmin für einen bestimmten Anwendungsfall zu verwenden. Eigentlich bin ich ein Front-End-Entwickler und die Backend-APIs ändern sich ständig, während das System unter Migration steht. Also wollte ich einen Test für den Dienst implementieren, bei dem ich die Antwort von der tatsächlichen API abfangen und die Antwort testen kann, bei der ich die ganze Zeit die gleichen Daten habe, wenn die Datenbank exportiert wird und sich im konsistenten Zustand befindet. Gibt es eine Möglichkeit, es zu tun? Da alle Artikel gelesen werden, verspotten sie die Antwort der API und testen dann die einzelnen geschriebenen Methoden. Oder muss ich Winkelmesser für E2E-Tests verwenden?Testen in AngularJS: Wie kann ich die Backend-Antwort meiner APIs testen?
Antwort
Viele Leute vergessen, dass Karma nicht spezifisch für Angular ist. Es wird gemacht, um Tests mit JavaScript-Code auszuführen, unabhängig von dem Framework, das Sie verwenden können oder nicht. So können Sie Tests mit Karma ausführen, die keine Winkel- oder Winkelsperren verwenden und mit einer Datenbank interagieren. Diese Arten von Tests werden Integrations- oder Funktionstests genannt (es gibt eine feine Linie, die die beiden trennt, je nachdem wie man sie betrachtet) und sie sollten in jedem Projekt enthalten sein. Ich habe Tests dieser Art gesehen, Jasmin zu benutzen, und ich habe gesehen, dass sie Mocha benutzen. Es ist deine Entscheidung. Sie sollten jedoch nicht erwarten, dass sie so schnell wie Unit-Tests ausgeführt werden, da Sie mit der Netzwerk- und Datenbanklatenz zu kämpfen haben. Wenn Sie diese Tests in Ihrem Entwicklungszyklus ausführen, liegt es an Ihnen. Da sie länger dauern, werden sie meistens nur auf einem vollständigen Build ausgeführt oder nachdem sich die API/Datenbank geändert hat.
All dies wird gesagt, die Entwickler, die die API produzieren, sollten diejenigen sein, die diese Tests schreiben/ausführen und Ihnen (dem Kunden) aktualisierte Dokumentation zur Verfügung stellen.
Wenn Sie Tests mit Karma ausführen, wird Ihr Backend verspottet, sobald Sie angular-mocks.js laden (siehe https://docs.angularjs.org/api/ngMock/service/ $ httpBackend). Das ist es, was wir wollen, weil wir Komponententests schnell ausführen müssen, ohne ein Backend und eine Datenbank ausführen zu müssen.
Wenn Sie die Interaktion zwischen Ihrer App und der realen API testen möchten, müssen Sie E2E-Tests mit protactor durchführen, da bei dieser Art von Test das Back-End ausgeführt wird.
Jetzt, wenn Sie die echte API-Ausgabe testen müssen, ist es - meiner bescheidenen Meinung nach - die Arbeit des Backend-Entwicklers. Nachdem Sie das gesagt haben, können Sie es natürlich selbst testen, aber es hat nichts mit AngularJS zu tun. Ich bin kein NodeJS-Entwickler, aber es gibt Tools zum Testen des API-Endpunkts. Sie können an SuperTest suchen zum Beispiel
bietet eine High-Level-Abstraktion zum Testen HTTP
Hier ist ein Beispiel aus ihrer Dokumentation weichen:
var request = require('supertest');
var express = require('express');
var app = express();
app.get('/user', function(req, res) {
res.status(200).json({ name: 'tobi' });
});
request(app)
.get('/user')
.expect('Content-Type', /json/)
.expect('Content-Length', '15')
.expect(200)
.end(function(err, res) {
if (err) throw err;
});
@MBielski Ich möchte nicht testen, ob die API die Ausgabe korrekt berechnet ... Aber wenn die Parameter, die wir in der Antwort gesendet haben, gleich sind, plus der API-Endpunkt ist immer noch der gleiche und keine Änderung wurde vorgenommen Verbessern Sie die Ausführlichkeit des Endpunkts. Das ist alles. Wir haben Tests in Mocha im NodeJS-Backend, um jede Funktion zu testen, die von diesem Endpunkt aus aufgerufen wird. –
@MBielski du hast Recht, korrigierte ich meine Antwort. Vielen Dank für Ihren Punkt –
@SarasArya Sie brauchen Ihre eckige App nicht, um Ihren API-Vertrag zu überprüfen. Sie können das Endopint Ihres Knotens mit Mocha perfekt testen, zum Beispiel mit SuperTest oder Chai. –
- 1. Wie kann ich einen AngularJS-Provider testen?
- 2. Testen von Drittanbieter-APIs
- 3. So testen Sie APIs
- 4. Wie kann ich die Synchronisation meiner blockierenden Queue-Implementierung testen
- 5. Wie kann ich die Zuverlässigkeit meiner Veins-Simulationen testen?
- 6. Haskell: Testen von Web-APIs
- 7. Wie kann ich Stunnel testen?
- 8. Wie testen Drag & Drop-Funktionalität in AngularJS e2e testen
- 9. Wie kann ich die GWT-Entwicklung testen?
- 10. Wie kann ich Datenbankmigrationen testen?
- 11. Wie kann ich Google-Anzeigen auf meiner Website testen?
- 12. AngularJS testen mit Karma
- 13. Testen angularjs mit Abhängigkeiten
- 14. Wie kann ich AngularJS-Code mit Mocha testen?
- 15. Wie kann ich ModelState testen?
- 16. Testen von REST-APIs mit PHPUnit
- 17. Wie kann ich die in Tomcat konfigurierten Datenquellenverbindungen testen?
- 18. Wie kann ich Leistungsoptimierungen in C testen?
- 19. Testen des AngularJS-Richtlinienbereichs undefined
- 20. Wie kann ich $ watch in Winkel testen
- 21. Wie kann ich Ereignisse in eckigen testen?
- 22. Wie kann ich meine Meteormethoden testen?
- 23. Wie kann ich Einheit GUI testen?
- 24. Aufruf/Testen von Web-APIs in iOS-App
- 25. Wie kann ich iOS-Upgradeszenarien testen?
- 26. AngularJS Unit Testen eines Dienstes
- 27. Wie kann ich die Existenz einer Funktion in Dart testen?
- 28. Wie kann ich die zeitliche Heterogenität in RSiena testen?
- 29. AngularJS - nicht richtig Richtlinie testen
- 30. Testen von AngularJS Versprechen in Jasmine 2.0
Können Sie mich auf eine Ressource hinweisen was zeigt anhand eines Beispiels, wie man eine Live-API aufruft und dann die Antwort bestätigt? –
Fragen an Google nach Dingen für Sie ist nicht, wie es hier auf SO gemacht wird. Es gibt viele Websites zur Verfügung, um zu zeigen, was Sie wollen. Keywords wie 'Node mocha test api' sollten Ihnen eine vernünftige Liste geben. – MBielski