Я пытаюсь проверить правильность параметров http при выполнении запроса http.
При выполнении expect(req.request.params.get('action')).toEqual('pause');
тест не пройден:
Ожидается: "пауза" Получено: null
Сервис
constructor(private _http: HttpClient)
pause(key: string): Observable<ReturnValue> {
const httpParams = new HttpParams().set('action', 'pause');
return this._http
.put<ReturnValue>(`${API.pauseUrl}/${key}`, {
params: httpParams,
});
}
Тест
let httpMock: HttpTestingController;
let httpClient: HttpClient;
let service: MyService;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [MyService],
}).compileComponents();
httpMock = TestBed.inject(HttpTestingController);
httpClient = TestBed.inject(HttpClient);
service = TestBed.inject(MyService);
});
afterEach(() => {
httpMock.verify();
});
describe("WHEN: pause", () => {
const key = "1q2w3e-4r5t6y";
const response: ReturnValue = ({
key,
status: "paused",
} as ReturnValue;
it("THEN: should call http.put with the expected url and params", (done) => {
service.pause(key).subscribe(() => {
expect(req.request.method).toBe('PUT');
expect(req.request.params.get('action')).toEqual('pause');
expect(req.request.url).toBe(`${PUSH_CORE_API.parcelUrl}/${key}`);
done();
});
const req = httpMock.expectOne({
method: 'PUT',
url: `${PUSH_CORE_API.parcelUrl}/${key}`,
});
req.flush(response);
});
});
Есть идеи, почему это происходит?
Я использую Angular с Jest и TestBed для этого теста.