带有查询参数的HttpTestingController.expectOne()

时间:2019-02-19 16:57:27

标签: angular testing karma-jasmine

我是使用Jasmine / Karma进行角度测试的新手,在使用HttpTestingController测试角度服务时遇到了一个问题。 这是源代码的一部分:

getProfile(userName: string) {
    let config = {
      params: {
        user_id: "test"    
      }
    }
    return this.http
      .get(`https://api.github.com/users/${userName}`, config);
  }

使用HttpTestingController的ExpectOne调用服务时:

it('should add an Authorization header', () => {
let response;
userService.getProfile('blacksonic').subscribe(response => {
  expect(response).toBeTruthy();
});


const req = 
httpMock.expectOne({ method: 'GET', url:'https://api.github.com/users/blacksonic' });

});

我遇到以下错误:

错误:预期对标准“匹配方法:GET,URL:https://api.github.com/users/blacksonic”的一个匹配请求,未找到任何请求。         在HttpClientTestingBackend.expectOne(./node_modules/@angular/common/fesm5/http/testing.js?:301:19)         在UserContext.eval(./src/app/Interceptors/Interceptor.spec.ts?:85:28)         在ZoneDelegate.invoke(./node_modules/zone.js/dist/zone.js?:387:26)         在ProxyZoneSpec.onInvoke(./node_modules/zone.js/dist/zone-testing.js?:287:39)         在ZoneDelegate.invoke(./node_modules/zone.js/dist/zone.js?:386:32)         在Zone.run(./node_modules/zone.js/dist/zone.js?:137:43)         在runInTestZone(./node_modules/zone.js/dist/zone-testing.js?:508:34)         在UserContext.eval(./node_modules/zone.js/dist/zone-testing.js?:523:20)

1 个答案:

答案 0 :(得分:0)

您正在传递参数。所以这样的事情会起作用:

const req = httpMock.expectOne(
 { method: 'GET', url:'https://api.github.com/users/blacksonic?user_id=test' });