2017-12-11 5 views
0

gibt es durchaus ein paar Howto der auf Unit-Tests und in Winkeln spöttisch, aber alle von ihnen sind für Unit-TestsMocking Httpclient json Daten für die Offline-dev Umgebung

i einen Offline-Entwicklungsmodus müssen, wo die HTTP-Anfragen gefüttert werden Wie kann dies in eckigen5 von konstantem json aus geschehen?

+0

Warum gehst du nicht einfach den Server auf Ihrem eigenen Rechner starten? –

+0

@ JBNizet, weil es ein komplexer Server ist. – Aviel

+0

Sicher, aber Sie könnten eine einfachere starten, die konstante json dient. –

Antwort

0

erstellen Mock Service, der Sie bei der Erstellung ersetzen kann:

db.json

{ 
    "model": [ 
     ... 
    ] 
} 

data.service.ts

var db = require('./db.json'); 

@Injectable() 
export class DataService { 

    constructor() { 

    } 

    getData(): Observable<Model> { 
     return Observable.of(db.model); 
    } 
} 
+0

Ich versuche, einen Weg zu finden, dies zu tun, ohne den gesamten Dienst zu ersetzen – Aviel

0

Wenn Sie möchten, Importieren Sie JSON den ES6 Weg:

Sie zunächst eine Definition in Ihrem typings.d.ts

Dann
declare module "*.json" { 
    const value: any; 
    export default value; 
} 

hinzufügen, können Sie Ihre JSON wie so importieren:

import * as MOCKED_DATA from './mocked-data.json'; 
+0

Ich brauche eine Möglichkeit, die httpclient-Antwort zu verspotten, ohne die Dienstlogik zu ändern. – Aviel

+0

Naja, Sie haben mehrere Möglichkeiten: Erstens, ein Interceptor, der Ihre Daten durch Ihren Schein ersetzt. Zweitens, eine andere Methode, der gleiche Name + "Mock". Die dritte Option, return Observable.of (mock) 'anstelle Ihres aktuellen http-Aufrufs. Und warum sollten Sie Ihre Servicelogik nicht ändern? Per Definition, wenn Sie wollen, müssen Sie die Logik ändern ... – trichetriche

+0

Interceptor klingt interessant, aber ich kann nicht finden, eine Arbeit Beispiel für die Verwendung von es zu mock Daten – Aviel

Verwandte Themen