HTTP post request unit testing in Angular 4

Discussão em 'Angular' iniciado por Zsolt Makrai, Setembro 27, 2024.

  1. Zsolt Makrai

    Zsolt Makrai Guest

    THIS TEST IS WORKING NOW!

    I would like to test an HTTP request in Angular 2, but it is not working. Here is the error message: ERROR in .../loginservice.service.spec.ts (45,11): ';' expected. ERROR in .../loginservice.service.spec.ts (45,12): ')' expected.

    and here is the code: It is a post request, and it working properly.

    import { Injectable } from '@angular/core';
    import { Http, Response, Headers, RequestOptions } from '@angular/http';
    import { Observable } from 'rxjs/Rx';

    import 'rxjs/add/operator/map';
    import 'rxjs/add/operator/catch';

    @Injectable()
    export class LoginService {

    constructor(private http: Http) { }

    postLoginDetails(loginDetails): Observable<Comment[]> {
    const endpoint = 'http://localhost:8080/api/login';
    const bodyString = loginDetails;
    const headers = new Headers({ 'Content-Type': 'application/json'});
    const options = new RequestOptions({headers: headers});

    return this.http.post(endpoint, bodyString, options)
    .map((res: Response) => res.json())
    .catch((error: any) => Observable.throw(error.json().error || 'server error'));
    }
    }


    and here is the test for it: This is the test for the post request. I used different articles to write it and perhaps that is why it is not working.

    import { TestBed, inject } from '@angular/core/testing';
    import {
    HttpModule,
    Http,
    XHRBackend,
    ResponseOptions,
    Response,
    Headers
    } from '@angular/http';
    import { MockBackend, MockConnection } from '@angular/http/testing';

    import { LoginService } from './loginservice.service';

    describe('LoginService', () => {

    beforeEach(() => {

    TestBed.configureTestingModule({
    imports: [HttpModule],
    providers: [
    LoginService,
    { provide: XHRBackend, useClass: MockBackend },
    ]
    });
    });

    describe('postLoginDetails()', () => {
    it('should return an Observable<Comment[]> with ok status',
    inject([LoginService, XHRBackend], (LoginService, MockBackend) => {
    const mockResponse = {
    status: 'ok',
    token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IlRlc3RBZG1pbiIsImFkbWluIjp0cnVlfQ.nhC1EDI5xLGM4yZL2VMZyvHcbcWiXM2RVS7Y8Pt0Zuk'
    }

    const loginDetails = {
    email: 'test@example.com',
    password: '1234'
    };
    MockBackend.connections.subscribe((connection) => {
    connection.mockRespond(new Response(new ResponseOptions({
    body: JSON.stringify(mockResponse)
    })));
    });
    LoginService.postLoginDetails(loginDetails).subscribe((mockResponse) => {
    expect(mockResponse.status).toEqual('ok');
    });
    }));
    });
    });

    Continue reading...

Compartilhe esta Página