95 lines
2.7 KiB
TypeScript
95 lines
2.7 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {HttpClient} from '@angular/common/http';
|
|
import {HttpClientTestingBackend} from '@angular/common/http/testing/src/backend';
|
|
|
|
describe('HttpClient TestRequest', () => {
|
|
it('accepts a null body', () => {
|
|
const mock = new HttpClientTestingBackend();
|
|
const client = new HttpClient(mock);
|
|
|
|
let resp: any;
|
|
client.post('/some-url', {test: 'test'}).subscribe(body => {
|
|
resp = body;
|
|
});
|
|
|
|
const req = mock.expectOne('/some-url');
|
|
req.flush(null);
|
|
|
|
expect(resp).toBeNull();
|
|
});
|
|
|
|
it('throws if no request matches', () => {
|
|
const mock = new HttpClientTestingBackend();
|
|
const client = new HttpClient(mock);
|
|
|
|
let resp: any;
|
|
client.get('/some-other-url').subscribe(body => {
|
|
resp = body;
|
|
});
|
|
|
|
try {
|
|
// expect different URL
|
|
mock.expectOne('/some-url').flush(null);
|
|
fail();
|
|
} catch (error) {
|
|
expect(error.message)
|
|
.toBe(
|
|
'Expected one matching request for criteria "Match URL: /some-url", found none.' +
|
|
' Requests received are: GET /some-other-url.');
|
|
}
|
|
});
|
|
|
|
it('throws if no request matches the exact parameters', () => {
|
|
const mock = new HttpClientTestingBackend();
|
|
const client = new HttpClient(mock);
|
|
|
|
let resp: any;
|
|
const params = {query: 'hello'};
|
|
client.get('/some-url', {params}).subscribe(body => {
|
|
resp = body;
|
|
});
|
|
|
|
try {
|
|
// expect different query parameters
|
|
mock.expectOne('/some-url?query=world').flush(null);
|
|
fail();
|
|
} catch (error) {
|
|
expect(error.message)
|
|
.toBe(
|
|
'Expected one matching request for criteria "Match URL: /some-url?query=world", found none.' +
|
|
' Requests received are: GET /some-url?query=hello.');
|
|
}
|
|
});
|
|
|
|
it('throws if no request matches with several requests received', () => {
|
|
const mock = new HttpClientTestingBackend();
|
|
const client = new HttpClient(mock);
|
|
|
|
let resp: any;
|
|
client.get('/some-other-url?query=world').subscribe(body => {
|
|
resp = body;
|
|
});
|
|
client.post('/and-another-url', {}).subscribe(body => {
|
|
resp = body;
|
|
});
|
|
|
|
try {
|
|
// expect different URL
|
|
mock.expectOne('/some-url').flush(null);
|
|
fail();
|
|
} catch (error) {
|
|
expect(error.message)
|
|
.toBe(
|
|
'Expected one matching request for criteria "Match URL: /some-url", found none.' +
|
|
' Requests received are: GET /some-other-url?query=world, POST /and-another-url.');
|
|
}
|
|
});
|
|
});
|