Winkelmesser, Spott backend mit angular2 auf api-Anforderung
Ich könnte etwas Hilfe verwenden, um eine Lösung zu finden für mein problem. Ich müssen zu verspotten einige Daten zu meinem angular2 Anwendung, wenn es eine Anforderung an eine api, ich muss etwas tun wie:
$httpBackend.when('GET', '/userbookings/').respond(my json file data);
Das problem ist, dass alle, die ich finden kann auf google, mit dem $httpBackend, die verwendet wird, für angularJS (Winkel-1).
Kennt jeder, wie kann ich das in meinem E2E-test (Die Anwendung ist ein angular2 applciation)? Ich versuche zu tun, dies sowohl mit Winkelmesser oder nightwatch (Habe beide ausprobiert frameworks)
Spec test:
describe('Protractor Mocking bookings for angular2 site', function() {
var ngMockE2E = require('ng-mock-e2e');
var $httpBackend = ngMockE2E.$httpBackend;
beforeEach(function() {
ngMockE2E.addMockModule();
ngMockE2E.addAsDependencyForModule('myApp');
ngMockE2E.embedScript('/bower_components/angular-mocks/angular-mocks.js');
});
afterEach(function() {
ngMockE2E.clearMockModules();
});
it('Inject mock data of bookings', function() {
var EC = protractor.ExpectedConditions;
var global = require('../bin/globals.js');
//Bookings data in a json file which should be send as the response
var mockData = require('../testData.json');
browser.ignoreSynchronization = false;
$httpBackend.when('GET', '/userbookings').respond(mockData);
browser.get(global.so.enLoggedIn);
});
});
Dieser test nicht funktionieren, weil es mit einigen angular1 Weg. Gezeigt haben, so können Sie sehen, wie mein test aussieht.
Hoffe jemand kann mir helfen hier heraus, weil es wirklich schwer zu finden, einige arbeiten mit angular2.
- Ich würde empfehlen, dieses Paket github.com/atecarlos/protractor-http-mock.
- Haben Sie versucht, es mit dem Winkel 2?. Haben es schon versucht und sah Sie an.. Die Beschreibung, wie es funktioniert ist schwer zu verstehen. Vielleicht ist es nur mich.
- Ist das, was Sie sind auf der Suche nach etwas, was hier beschrieben? Es ist nicht wirklich in einer Testumgebung testen, wäre aber kein problem zu portieren. sitepoint.com/angular-2-mockbackend
- Ich schaue, wenn ich zurück bin bei der Arbeit.. sieht interessant aus - vielen Dank so weit!!!
- Nicht wirklich helfen Sie mir :(, ich brauche irgendwie eine lib, die ich bekommen kann über npm.
- auch die Bibliothek selbst ist Teil des Angular2 das ist installiert über NPM
- oh ok, ich sehe, Sie wollen, dass für eine Reale E2E-test vs Unit-Tests ... sry mein Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Winkelmesser noch keine Unterstützung für das hinzufügen von mock-Module für Eckige 2-Anwendungen:
Und ich habe auch eine github-issue für die TODO aufmerksam:
Diese, durch die Art und Weise, bedeutet auch, dass
protractor-http-mock
ist nicht gonna Arbeit, denn es setzt aufaddMockModule
intern. Ich habe persönlich versuchtprotractor-http-mock
auf einer Stichprobe Angular2 Anwendung kam:Gleiche gilt für die
http-backend-proxy
undhttpbackend
Pakete.Denke ich, während das Problem ist noch nicht behoben, sollten Sie feuern ein proxy, dass würde als eine Art "externe mock", um Ihre API-backend, haben das nicht getan persönlich, sehen Sie mehr unter:
Endete mit json-server, da es noch keine Unterstützung von
addMockModule
für Eckige 2Da es keine Unterstützung für verspottet Module im Winkel 2, habe ich einen kleinen Winkelmesser plugin, das erlaubt mock ajax-request. Sie können es hier finden: https://github.com/krisboit/protractor-xmlhttprequest-mock
Gibt es keine Dokumentation, aber Sie können finden Sie Beispiel-tests. Ich hoffe es hilft dir.
browser.executeScript
mitbrowser.driver.executeScript
imindex.js
Ich eine Lösung gefunden, um diesem das ist relativ schmerzlos und so weit funktioniert Super, und ist es nicht erforderlich, ändern Sie alle Verweise auf die vorhandenen Importe.
Gibt es mehrere Schritte, je nachdem, was Sie versuchen zu erreichen. Ich war arbeiten, auf der e2e-tests, so wird diese Gliederung, die Lösung.
Ersten update Ihrer eckigen.json mit configs, die speziell auf Ihre Testumgebung (rechts oben "dienen") meiner ist:
Dann, aktualisieren Sie Ihre vorhandenen e2e-config durch die Aktualisierung der
devServerTarget
mit Ihrem neuen config:"devServerTarget": "{APP_NAME}:serve-e2e:test"
Als Nächstes erstellte ich einen neuen Satz von Umwelt-spezifischen Dateien aufgerufen
mock-service-mapping
, also in meinem Umfeld Ordner habe ich jetzt:In diesen Dateien, die ich speichern das mapping auf mein real-und mock-services:
Nun müssen wir, um Sie von der Umgebung. Aktualisieren Sie Ihre Winkelgeschwindigkeit.json-setup die korrekten Zuordnungen für die verschiedenen Umgebungen:
Und das Letzte Stück der Magie. In Ihrem Modul-Deklarationen, der setup deines providers zu ziehen, die Klasse von Ihrem neuen mock-Umgebung Dateien.
{ provide: DataService, useClass: mockServiceMapping.dataServiceClass }
Und voila, mock-services, keine Bibliotheken, kein dreck, kein extra kompilierten code und relativ unkompliziert!
Persönlich, ich benutzte die ng-apimock plugin zu verspotten, alle Netzwerk-Aufrufe an das backend mit einem proxy.
Es funktioniert wirklich gut und ist einfach zu konfigurieren. Folgen Sie einfach die Konfiguration für Winkel Anwendung hier