각도 4.3.X에서 새로운 HttpClient를 사용해보십시오. HttpInterceptor를 구현하는 쉬운 방법을 제공합니다. 가로 채기하려면
클래스에서 재정의해야 할 메소드 가로 채기가있는 HttpInterceptor 인터페이스를 사용하십시오. 아래로 샘플 코드,
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpResponse, HttpErrorResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/Observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/Observable/of';
import 'rxjs/add/operator/do';
export class YourInterceptor implements HttpInterceptor{
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>{
// Your interceptor code comes here.
// you wish to change the request, change here.
request = request.clone({
setHeaders: {
Authorization: `Bearer ${this.auth.getToken()}`
}
});
return next.handle(request);
}
}
그래서
각도 4 HttpTestingController, HttpClientTestingModule와 함께 작동하는 두 개의 멋진 클래스를 제공 할 수 있도록 내가, 같은 위해도 단위 테스트를 작성하려고 생각 . 이것을 사용하기 전에 module.ts 파일에 HttpClientModule을 제공해야합니다. 귀하의 경우는 HTTP를 될 것입니다, 아래로
import { TestBed, inject, getTestBed } from '@angular/core/testing';
import { HttpClient, HttpClientModule } from '@angular/common/http';
import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing';
import { YourService } from './get-name-service.service';
describe('YourService',() => {
let injector: TestBed;
let httpMock: HttpTestingController;
let yourService: YourService;
beforeEach(() => {
TestBed.configureTestingModule({
imports:[HttpClientTestingModule],
providers: [YourService]
});
injector = getTestBed();
httpMock = injector.get(HttpTestingController);
yourService = TestBed.get(YourService);
});
describe('#getUsers',() => {
it('should return an Observable<User[]>',() => {
const dummyUsers = [
{ login: 'John' },
{ login: 'Doe' }
];
yourService.getNames().subscribe(users => {
console.log('I am here in yourService method');
expect(users.length).toBe(2);
expect(users).toEqual(dummyUsers);
});
const req = httpMock.expectOne('http://localhost:8080/dev/getNames');
expect(req.request.method).toBe("GET");
req.flush(dummyUsers);
});
});
});
나는 HttpClient가 있다는 것을 알고 있습니다. 귀하의 의견을 보내 주셔서 감사합니다. 그러나 이미 HTTP를 사용하는 자습서를 따르고 있으므로 Angular의 MockBackEnd 및 MockConnection을 사용하여 akeBackendProvider의 내부 동작을 이해하고 싶습니다. 그 방향으로 어떤 도움을 주시면 감사하겠습니다. – Shadab
자습서를 따르고 있지만 HttpClient를 사용한다는 점에 동의합니다. 사용되지 않으며 더 이상 사용되지 않습니다. – Maccurt