2017-10-06 16 views
4

私は、HttpModuleを使ってajax呼び出しを呼び出し、モックアップバックエンドを使用してフロントエンドのすべての要求を開発しました。 これで、インターセプター機能を使用したいので、私はHttpClientModuleを使用します。しかし、Httpの私のモックアップバックエンドベースは動作していません。 モックアップバックエンドを変更して、HttpCleintからコールをキャッチする方法を教えてください。あなたのテストで角4.3 MockBackendを使用したHttpClient

偽-backend.ts

import { Http, BaseRequestOptions, Response, ResponseOptions, RequestMethod } from '@angular/http'; 
import { MockBackend, MockConnection } from '@angular/http/testing'; 
import { environment } from '../../environments/environment'; 

export function fakeBackendFactory(backend: MockBackend, options: 
BaseRequestOptions) { 
    // configure fake backend 
    backend.connections.subscribe((connection: MockConnection) => { 
    let testUser = { username: 'test', password: 'test', firstName: 'Test', lastName: 'User' }; 

    // wrap in timeout to simulate server api call 
    setTimeout(() => { 

     // 
     if (connection.request.url.includes('/daquery/ws/setup') && connection.request.method === RequestMethod.Get) { 
     ... 
    } 

    return new Http(backend, options); 
} 

答えて

-1

あなたはHttpClientModuleのHttpを使用していない、とにかくサービスのテスト中にHTTPClientからの偽の応答に、これはどのようですテストを設定します。

import {TestBed, getTestBed} from '@angular/core/testing'; 
import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; 


beforeEach(() => { 
    TestBed.configureTestingModule({ 
    imports: [HttpClientTestingModule], 
    providers: [AuthService] 
    }); 

    authService = TestBed.get(AuthService); 
    httpMock = TestBed.get(HttpTestingController); 
}); 

it('should return user and token successfully at login', (done) => { 
    const credentials = {userName: 'bob', password: '123'} as LoginPayload; 
    const httpResponse = {user: user, token: '123'} as LoginSuccessPayload; 

    authService.login(credentials).subscribe(res => { 
    expect(res).toEqual(httpResponse); 
    done(); 
    }); 

    const loginRequest = httpMock.expectOne('/api/auth/signin'); 
    loginRequest.flush(httpResponse); 

    expect(loginRequest).toBeDefined(); 
    expect(loginRequest.request.method).toEqual('POST'); 

    httpMock.verify(); 
}); 
関連する問題