Я пытаюсь создать тест, который мой сервис в 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;
});
});
})
Я действительно хочу знать, как я могу написать тест для этой службы.Как я сказал, прежде чем написать какой-либо тест, но все же не то, что я хочу сделать.
Кто-нибудь Может мне помочь, как я мог написать этот тест?Мне нужно протестировать наблюдаемое, которое возвращает ошибку и успешный ответ.
Большое спасибо !!!