2016-05-02 1 views
1

ang1では、ローカルで開発していたときに$ httpBackendを使用してhttpコールをスタブ/モックすることができました。ローカル開発用のAngular2レスポンスのスタブ付け

$httpBackend 
    .whenGET('/api/v1/accounts/ticker') 
    .respond({data: [1,2,3]}) 

Angular2のローカル開発では、どうやって同様のことをやりますか?

+0

Node and Expressは実行可能なオプションを使用していますか?これにより、ローカルの本格的なRestサーバーを迅速に作成し、アプリケーションからRestサービスを呼び出すことができます。 – Picci

答えて

0

更新

describe('...',() => { 

    beforeEach(() => { 

    TestBed.configureTestingModule({ 
     declarations: [TestComponent], 
     providers: [ 
     MockBackend 
     {provide: XHRBackend, useExisting: MockBackend}, 
     {provide: JSONPBackend, useExisting: MockBackend} 
     ], 
     imports: [HttpModule] 
    }); 
    }); 

    it('...',() => { 
    const fixture = TestBed.createComponent(TestComponent); 
    }); 
}); 

bootstrap(AppComponent, [ 
    HTTP_PROVIDERS, 
    provide(XHRBackend, {useClass: MockBackend}), 
    provide(JSONPBackend, {useClass: MockBackend})]); 

そしてMockBackendを注入して、コンポーネントまたはbootstr後にそれを注入することができる

backend.connections.subscribe(c => connection = c); 
    http.request('data.json').subscribe((res) => { 
    expect(res.text()).toBe('awesome'); 
    async.done(); 
    }); 
    connection.mockRespond(new Response('awesome')); 

ようにそれを使用ap like

bootstrap(AppComponent, [ 
    HTTP_PROVIDERS, 
    provide(XHRBackend, {useClass: MockBackend}), 
    provide(JSONPBackend, {useClass: MockBackend})]) 
.then((componentRef: ComponentRef) => { 
    let injector = componentRef.injector; 
    let backend = injector.get(MockBackend); 
    backend.connections.subscribe(connection => { 
    if(connection.request ...) { 
     connection.mockRespond(new Response('awesome'));  
    } 
    }); 
}); 
+0

素晴らしい、ありがとう! – austin809

+0

これは現在の2.0.0リリースでは動作しません。あなたはこれで作業していますか? – amay0048

+0

私は自分の答えを更新しました(まだ試していません)。 –

関連する問題