Угловой сервисный метод, который возвращает данные из базы данных, возвращает неопределенную в спецификации тестирования.
У меня есть метод в myservice.ts, который называется getEvents (), который создает массив, вызывает метод http.get и заполняет массив., чтобы вернуть его с информацией базы данных.Однако, когда я вызываю этот метод в моем файле myservice.spec.ts, он возвращает неопределенное значение.
myservice.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { MyComponent } from './mycomponent.component.ts';
@Injectable({
providedIn: 'root'
})
export class MyService {
getEvents(): string[] {
const events = [];
this.http.get<MyClass[]>('http://localhost:3001/getEvents')
.subscribe(subscribedEvents => {
for (const event of subscribedEvents ) {
events.push(event);
}
});
return events;
}
constructor(private http: HttpClient) { }
}
myservice.service.spec.ts:
import { async, TestBed } from '@angular/core/testing';
import { HttpClientModule } from '@angular/common/http';
import { MyService } from './myservice.service';
describe('MyService', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ HttpClientModule ],
providers: [ MyService ]
})
.compileComponents();
}));
it('getEvents', () => {
const service: MyService = TestBed.get(MyService);
expect(service.getEvents()[0]).toEqual('FirstEvent');
});
});
getEvents () вызывает мой внутренний сервер (проверяется компонентом и почтальоном), получает данные из .subscribe () и помещает их в массив.Заполненный массив возвращается.Это прекрасно работает в моем компоненте, но в спецификации сервиса он возвращает undefined.
Я прошу прощения за родовые имена;Я не хочу, чтобы мой исходный код был опубликован.
Ошибка:
Expected undefined to equal 'FirstEvent'.