Я пытался написать модульное тестирование httpmock одного из сервисов, который использует метод (функцию) для получения http get call, но не смог записать.
saveservice.service.ts - file
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
const envURL = sessionStorage.getItem('apiBaseURL');
httpGet<T>(url) {
const URL = envURL + url;
return this.http.get<T>(URL, httpOptions);
}
Вот как рабочие сервисы и сервис сохранения связаны. Теперь я хочу написать тестовый блок для работы. Файл component.ts, но я не могу записать вызовы httpmock туда.
Для информации, apiUrl присутствует в другом файле с именем env.ts file-- env.ts
env.ts - файл
export const apivalue= {
apiBaseUrl:"https://example.co/",
};
work.service.ts
import {SaveserviceService } from '../../.././saveservice.service';
getworklist(employeeID){
return this.saveservice.httpGet('work/v1/works?employeeid=' + employeeID);
}
Вот как связаны служба обслуживания и сохранения. Теперь яЯ хочу написать тестовый блок для файла work.component.ts, но я не могу записать туда вызовы httpmock.
work.component.ts
ngOnit(){
this.employeeID:this.id;
this.workservice.getworkList(this.employeeID).subscribe(
(data) => {
this.workList = data;
console.log(" ggghfghfgh", this.worklist);
}, (error) => {
console.log(error);}
Выше приведен файл work.component.ts, для которого я должен написать примеры модульных тестов. Пожалуйста, помогите мне завершить его.
work.component.spec.ts
let httpMock: HttpTestingController;
let injector: Injector;
let workservice: WorksService;
let saveservice123: SaveService;
providers: [
Injector,
HttpClient,
HttpClientTestingModule,
saveService,
worksService
],
httpMock = TestBed.get(HttpTestingController);
workservice = TestBed.get(WorksService);
saveservice123 = TestBed.get(SaveService)
fit('getting work detsails indivually', async(() => {
fixture = TestBed.createComponent(worksComponent);
component = fixture.componentInstance;
fixture.detectChanges();
workservice.getworklist(123).subscribe(() =>{});
const request = httpMock.expectOne("work/v1/works?employeeid=")
// expect(request.request.method).toBe('httpGet');
// request.flush(xxxxx);
выдает ошибку ниже
Error: Expected one matching request for criteria "Match URL: work/v1/works?employeeid=", found none.
Пожалуйста, помогите, как узнать, как писать модульные тесты для этого типа .. Я также пытался шпионить,
const mockdata = { id:1, title: "Hello world", paste: "console.log('Hello world');"}
const spyOnAdd = spyOn(service, "getworkList").and.returnValue(mockdata);