Comment peut-on se moquer d'un http observable dans Angular2 pour quand aucun api n'est écrit?

Je suis nouveau chez Angular2 et Rxjs et je suis un peu confus à propos d'un cas particulier.

J'ai un service simple:

import { Injectable } from '@angular/core'; import { Observable, Subject } from 'rxjs/Rx'; import { Http, Response } from '@angular/http'; export interface Article { id: number; title: string; content: string; author: string; } @Injectable() export class ArticleService { private _articles$: Subject<Article[]>; private baseUrl: string; private dataStore: { articles: Article[] }; constructor(private http: Http) { this.baseUrl = 'http://localhost:3000' this.dataStore = { articles: [] }; this._articles$ = <Subject<Article[]>>new Subject(); } get articles$(){ return this._articles$.asObservable(); } loadAll(){ //Observable.from(this.dummyData) this.http.get(`${this.baseUrl}/articles`) .map(response => response.json()) .subscribe(data => { //debugger; this.dataStore.articles = data; // Push a new copy of our article list to all Subscribers. this._articles$.next(this.dataStore.articles) }, error => console.log('Could not load Articles')); } } 

Et cela fonctionne comme prévu, mais ce que j'aimerais faire, c'est de pouvoir développer mon service sans un point de terminaison d'api et d'utiliser un Observable que je peux échanger plus tard pour la http.request . J'ai essayé de le faire en utilisant Observable.from pour convertir un tableau de données fictif en un observable mais j'ai les erreurs

Type '{ id: number; title: string; content: string; author: string; }' is not assignable to type 'Article[]'

Je crois que c'est parce qu'il renvoie chaque élément séparément au lieu du tableau, quelqu'un peut-il me dire dans la bonne direction comment cela devrait fonctionner?

Mise à jour : pour plus de clarté, le DummyData ressemble à:

 private dummyData = [ { id: 1, title: 'Title 1', content: 'content 1', author: 'author 1' }, { id:2, title: 'Title 2', content: 'content 2', author: 'author 1' } ]; 

Vous pouvez utiliser MockBackend

 import {BaseRequestOptions, Http} from '@angular/http'; import {MockBackend} from '@angular/http/testing'; it('should get some data', inject([AsyncTestCompleter], (async) => { var connection; var injector = Injector.resolveAndCreate([ MockBackend, {provide: Http, useFactory: (backend, options) => { return new Http(backend, options); }, deps: [MockBackend, BaseRequestOptions]}]); var http = injector.get(Http); var backend = injector.get(MockBackend); //Assign any newly-created connection to local variable backend.connections.subscribe(c => connection = c); http.request('data.json').subscribe((res) => { expect(res.text()).toBe('awesome'); async.done(); }); connection.mockRespond(new Response('awesome')); })); 

Mettre à jour

Définissez le dummyData comme:

 private dummyData = { json: function() { return [ { id: 1, title: 'Title 1', content: 'content 1', author: 'author 1' }, { id:2, title: 'Title 2', content: 'content 2', author: 'author 1' } ]}; }