使用HttpTestingController拦截http请求,获取请求的查询参数,然后对其进行解析,为查询参数添加缺少的符号或删除多余的符号。示例代码如下:
it('should split query params correctly', () => {
const queryParams = {
param1: 'value1',
param2: 'value2'
}
service.getSomeData(queryParams).subscribe();
const req = httpMock.expectOne('http://example.com/data?param1=value1¶m2=value2')
expect(req.request.method).toBe('GET');
const newParams = {};
const oldParams = req.request.params.keys();
oldParams.forEach(param => {
const pieces = param.split(/[&=]/g)
if (pieces.length === 2) {
newParams[pieces[0]] = pieces[1];
} else {
const lastIndex = pieces.length - 2;
for (let i = 0; i <= lastIndex; i += 2) {
newParams[pieces[i]] = pieces[i + 1];
}
}
})
expect(newParams).toEqual(queryParams);
});