2015-09-20 10 views
6

Ich möchte das Backend für eine schnellere Entwicklung verspotten, indem Sie JSON-Antwort ohne Reling auf dem realen Backend. Die Frontend-App ist eine Angular-App und wir verwenden Gulp als Entwicklungs- und Build-Tool.Mock Backend für Angular/Gulp App

z. habe ein spezifisches api (.../custumers/123) gebe ein statisches json result zurück.

Gibt es vielleicht schon ein Schluckwerkzeug dafür?

Antwort

1

Ich ging mit json-server und gulp-json-srv, die ich denke, hatte einige Vorteile der Einfachheit und schnelle Einrichtung.

gulpfile.js config-json-Server und Proxy die HTTP-Anrufe mit einem "großen Schluck mock" Aufgabe zu starten:

gulp.task('mock', ['connect-mock'], function() { 
    jsonServer.start({ 
     data: 'db.json', 
     port: 8087 
    }); 
}); 

gulp.task('connect-mock', function() { 
    connect.server({ 
     port: 8085, 
     livereload: true, 
     middleware: function (connect, o) { 
      return [(function() { 
       var url = require('url'); 
       var proxy = require('proxy-middleware'); 
       var options = url.parse('http://127.0.0.1:8087'); 
       options.route = '/v2'; 
       return proxy(options); 
      })()]; 
     } 
    }); 
}); 

db.json mit verspott Daten:

{ 
    "customers": [ 
     { "id": 1, "name": "Johnny B" }, 
     { "id": 2, "name": "Steve G" }, 
     { "id": 3, "name": "Glenn H" } 
    ] 
+0

können Sie bitte genauer sein? das funktioniert nicht in meinem gulpfile. Ich bin neu im Schluck, also weiß ich nicht, wie man mit diesem Schein-Server anfängt. das "connect" -Objekt, das du in connect-mock benutzt hast, wird nicht deklariert oder injiziert, also wo kommt es hin? –

+0

@MarcusWolf 'connect' kommt aus dem Paket [gulp-connect] (https://www.npmjs.com/package/gulp-connect) – jamiebarrow

0

Sie können dazu mock server verwenden.

+0

Könnte es als Schluckaufgabe verwendet werden? –

3

Ich empfehle Sie überprüfen https://github.com/wongatech/angular-multimocks. Dies ermöglicht es Ihnen, Scheinantworten für Ihre Apis zu erstellen und ermöglicht es Ihnen, in Echtzeit über die URL in Ihrer App zwischen ihnen zu wechseln.

Wir haben es ursprünglich erstellt, wo ich arbeite, um genau dieses Problem zu lösen, und es wird jetzt in mehreren großen Tech-Unternehmen in London verwendet.

Sie definieren jeden Ihrer Mocks wie unten, Sie können mehrere verschiedene Antworten für eine Ressource erstellen und diese dann in Szenarien einordnen. Die Datei mockResources.json definiert die verfügbaren Szenarien und beschreibt, welche Version jeder Ressource für jedes Szenario verwendet werden soll.

Mock Beispiel:

{ 
    "httpMethod": "GET", 
    "statusCode": 200, 
    "uri": "/customer/cart", 
    "response": { 
    "id": "foo" 
    } 
} 

Szenario Listing Beispiel:

{ 
    "_default": [ 
    "root/_default.json", 
    "account/anonymous.json", 
    "orders/_default.json" 
    ], 
    "loggedIn": [ 
    "account/loggedIn.json" 
    ] 
} 

Es ermöglicht Ihnen, verschiedene Ruhe Verben, verschiedene URIs zu verspotten, fügen Verzögerungen Antworten (entweder für Tests langsame Antworten, oder einfach nur geben Sie App ein mehr leben wie fühlen).

Es ist ein Kernstück unserer Entwicklung und stark in unsere Abnahmetests integriert.

Checkout die Demo @http://tech.wonga.com/angular-multimocks, gibt das Projekt Readme detaillierte Anweisungen zur Einrichtung gerne bei weiteren Fragen helfen.

+1

Ich wollte mir das genau ansehen, weil es sich sehr vielversprechend anhört. Ich würde gerne mit Gulp rennen, ist das möglich? Ich konnte in Ihrem Repo nur Grunt-Aufgaben finden. –

+1

Es ist nur Grunzen jetzt leider - bitte fügen Sie ein Problem hinzu, um es schluckbar zu machen.Es ist nicht etwas, was wir jetzt tun wollen, sondern wir können die Funktionalität erweitern oder ergänzen oder Leute dazu bringen, uns mit Schluckanfragen zu überhäufen. Es wäre sicherlich eine großartige Ergänzung. – cconolly

+0

Mir ist klar, dass dies gut ist, nachdem du es brauchst, aber falls jemand darüber stolpert, funktioniert es jetzt auch mit Gulp. Die Dokumentation zeigt, was benötigt wird – cconolly