Я пытаюсь сделать несколько тестов для моего сервиса. В основном это Rest-звонки. Но некоторые из моих Rest-вызовов имеют HttpHeaders. Как я могу сделать тест, включающий параметры заголовка?
Я хочу сделать тест на этом:
public getAllNodes(): Observable<any> {
let headers: HttpHeaders = new HttpHeaders();
headers = headers.append('Content-Type', 'application/json');
headers = headers.append('Authorization', 'someTokenABC');
headers = headers.append('subscriptionId', 'aaa111');
headers = headers.append('organizationId', 'bbb222');
return this.http.get('https://someUrl/getall', {headers: headers, observe: 'response'})
.map(response => {
return response;
})
.catch(this.handleError);
}
Пока это мой тест:
describe('#getAllNodes', () => {
let injector: TestBed;
let service: MyService;
let httpMock: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [MyService]
});
injector = getTestBed();
service = injector.get(MyService);
httpMock = injector.get(HttpTestingController);
});
it('should return an Observable<any>', () => {
var dummyNodes = [{
"contentId": "111-222-333",
"title": "some title",
}];
service.getAllNodes().subscribe(nodes => {
expect(nodes.length).toBe(1);
expect(nodes).toEqual(dummyNodes);
});
const req = httpMock.expectOne('https://someUrl/getall');
expect(req.request.method).toBe("GET");
req.flush(dummyNodes);
httpMock.verify();
});
});
В моем случае я получаю эту ошибку: ожидается один соответствующий запрос по критериям «Соответствующий URL: https://someUrl/getall», но не найден.
Но я предполагаю, что это как-то связано с httpheader , Я не добавляю это, потому что я не знаю, как включить их в тест.
Кто-нибудь знает, как я могу выполнить этот тест?
РЕДАКТИРОВАТЬ:
Или может Я делаю что-то подобное? (node - это массив узлов, который заполняется при вызове getAllNodes ())
describe('#getAllNodes', () => {
let injector: TestBed;
let service: MyService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [MyService]
});
injector = getTestBed();
service = injector.get(MyService);
});
it('should have no nodes at startup', () => {
expect(service.nodes.length).toBe(0);
})
it('should have more than 1 node', () => {
service.getAllNodes();
expect(service.nodes.length).toBeGreaterThan(0);
})
});
Но здесь в последнем тесте он возвращает 0 совпадений. Хотя service.getAllNodes () должен возвращать несколько попаданий.