Как я мог протестировать сервис Angular с наблюдаемым, который возвращает два значения: успех и ошибку? - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь создать тест, который мой сервис в Angular с Жасмин + Карма.Я создал некоторый тест, но это не совсем то, что я хотел, я чувствовал, что я не тестирую свой код.

MyService

import { Injectable} from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'

import { URL} from '../../url.api';
import { SomeList} from '../../shared/model/some-list.model';
import { ErrorHandler } from '../../app.error-handler';
import { map, catchError } from 'rxjs/operators';


@Injectable()
export class MyService{

  constructor(private http: Http) { }



  getSomeList(): Observable<SomeList[]>{
    return this.http.get(`${URL}/recurso/some-list`)
      .pipe(
        map(response => response.json()),
        catchError(ErrorHandler.handleError)
      );
  }

}

My Spec

import { TestBed } from "@angular/core/testing";
import { HttpModule, Http } from '@angular/http';
import { MyService} from './myservice.service';

import { ErrorHandler } from 'src/app/app.error-handler';
import 'rxjs/add/observable/of';
import { Observable } from 'rxjs';


fdescribe('testar service', ()=>{

    let service: MyService;
    let err: ErrorHandler;
    let list: SomeList[];

    beforeEach(()=>{
        TestBed.configureTestingModule({
            imports:[HttpModule],
            providers:[MyService,
                {provide: Http, useValue: HttpModule}
            ]
        });

        service = TestBed.get(MyService);

    });


    it('should return error',()=>{

        spyOn(service, "getSomeList").and.callFake(()=>{
            return Observable.from([new ErrorHandler()]);
        });

        service.getSomeList().subscribe(()=>{
            expect(err).toThrowError;
        });        
    });

})

Я действительно хочу знать, как я могу написать тест для этой службы.Как я сказал, прежде чем написать какой-либо тест, но все же не то, что я хочу сделать.

Кто-нибудь Может мне помочь, как я мог написать этот тест?Мне нужно протестировать наблюдаемое, которое возвращает ошибку и успешный ответ.

Большое спасибо !!!

...